I min kod bygger jag ihop en sql-sträng, som väsentligen ser ut enligt nedan: > Alltså: när den andra updaten görs, är den första redan klar då? Frågan ser inte riktigt ut så egentligen, den är mycket mer komplicerad än så. Det finns en SUM() där du efterlyser en.Exekveringsordning
UPDATE Fakturarad SET Pris = 1000 WHERE Kund = 1 UPDATE Fakturor SET TotalBelopp = (SELECT Pris FROM Fakturarad WHERE Kund = 1) WHERE Kund = 1
Det finns alltså två stycken update-satser. Den andra updaten i ordningen är alltså beroende av att den första har gått igenom, men hela satsen exekveras genom samma ADO.Connection.execute.
Alltså: när den andra updaten görs, är den första redan klar då?
Annars får jag köra två separata Connection.execute
Sv: Exekveringsordning
Svaret på frågan är ja, den första är redan klar när den andra körs.
Sen skulle jag vilja påpeka två saker angående exemplet:
1) Borde du inte ha en SUM() i din SQL sats? Så här:
UPDATE Fakturarad SET Pris = 1000 WHERE Kund = 1 UPDATE Fakturor SET TotalBelopp = (SELECT SUM(Pris) FROM Fakturarad WHERE Kund = 1) WHERE Kund = 1
2) Den tabelldesign du använt kan vara lite farlig att använda. Vad händer om någon endast uppdaterar fakturarad och inte fakturor? Eftersom informationen om totalt belopp för en faktura går att ta fram från fakturarad så behöver du inte ha kolumnen totalbelopp i Fakturor, om inte prestanda är absolut prioriterat, vilket skulle kunna motivera denormaliseringen.Sv: Exekveringsordning
Anledningen till att totalbeloppet sparas även i tabellen för fakturahuvudet är att vissa fakturor inte har några rader, de är så kallade fastpris-fakturor.
Tack för svaret! :)