Opprett og administrer transaksjoner
Hvis du vil starte en transaksjon eksplisitt, bruker du BEGIN TRANSACTION eller den forkortede versjonen BEGIN TRAN.
Når en transaksjon er startet, må den avsluttes med følgende:
- UTFØR TRANSAKSJON, eller
- TILBAKERULLINGSTRANSAKSJON.
Dette sikrer at alle setninger i transaksjonen settes sammen eller rulles sammen igjen hvis det oppstår en feil.
Transaksjonene varer til en TRANSAKSJONSTRANSAKSJON ELLER TILBAKERULLINGSTRANSAKSJON er utstedt, eller tilkoblingen blir fjernet. Hvis tilkoblingen slippes delvis gjennom en transaksjon, rulles hele transaksjonen tilbake.
Transaksjoner kan nestes, i så fall rulles de indre transaksjonene tilbake hvis den ytre transaksjonen ruller tilbake.
Finner ingen feil
Når setningene i transaksjonen er fullført uten feil, kan du bruke COMMIT TRANSACTION, noen ganger forkortet til COMMIT TRAN. Dette utfører endringene i databasen. Dette vil også frigi ressurser som låser som holdes under transaksjonen.
Hvis det oppdages en feil
Hvis det oppstod en feil i transaksjonen, bruker du ROLLBACK-kommandoen.
TILBAKERULLING angrer eventuelle endringer som ble gjort i data under transaksjonen, slik at de ble værende før transaksjonen startet. TILBAKERULLING frigir også ressurser, for eksempel låser, som holdes for transaksjonen.
XACT_ABORT
Når SET XACT_ABORT er PÅ, rulles hele transaksjonen tilbake hvis SQL Server oppstår en feil. Når SET XACT_ABORT er AV, rulles bare uttrykket som oppdro feilen tilbake hvis alvorlighetsgraden av feilen er lav.
Når FOR eksempel SET XACT_ABORT er AV, har en transaksjon tre setninger. To har ingen feil, men den tredje bryter en kontrollbetingelse. I dette eksemplet, selv om de tre setningene er i en transaksjon, er to av dem forpliktet. I samme eksempel, hvis feilen var forårsaket av feil datatype, ville dette ha vært alvorlig nok til å utstede en tilbakerulling, og ingen av setningene ville ha utført.
Fordi det ikke alltid er klart om transaksjonen vil bli utført eller rullet tilbake, er det viktig å legge til feilbehandling i transaksjoner.