Vytváření a správa transakcí
Chcete-li explicitně spustit transakci, použijte BEGIN TRANSACTION nebo zkrácenou verzi BEGIN TRAN.
Jakmile je transakce spuštěna, musí být ukončena buď:
- POTVRZENÍ TRANSAKCE nebo
- VRÁCENÍ TRANSAKCE ZPĚT
Tím se zajistí, že všechny příkazy v rámci transakce jsou buď společně potvrzeny, nebo v případě chyby společně vráceny zpět.
Transakce trvají, dokud není vydán příkaz COMMIT TRANSACTION nebo ROLLBACK TRANSACTION, nebo dokud se připojení nepřeruší. Pokud je připojení ukončeno během transakce, celá transakce se vrátí do původního stavu.
Transakce mohou být vnořeny, v takovém případě dojde k jejich vrácení, pokud se vnější transakce uvede do původního stavu.
Nebyla zjištěna žádná chyba.
Pokud jsou příkazy ve vaší transakci dokončeny bez chyby, použijte COMMIT TRANSACTION, někdy zkrácena na COMMIT TRAN. Tím se potvrdí změny databáze. Tím se uvolní také prostředky, jako jsou zámky uchovávané během transakce.
Pokud se zjistí chyba
Pokud došlo k chybě v rámci transakce, použijte příkaz ROLLBACK.
FUNKCE ROLLBACK vrátí zpět všechny změny provedené v datech během transakce a ponechá je ve stavu, který byl před zahájením transakce. ROLLBACK také uvolňuje prostředky, jako jsou zámky, uchovávané pro transakci.
XACT_ABORT
Pokud je funkce SET XACT_ABORT zapnutá, pokud SQL Server vyvolá chybu, vrátí se celá transakce zpět. Pokud je XACT_ABORT SET VYPNUTO, vrátí se zpět pouze příkaz, který vyvolal chybu, pokud je závažnost chyby nízká.
Například když set XACT_ABORT je OFF transakce má tři příkazy. Dvě neobsahují žádné chyby, ale třetí z nich porušuje kontrolní omezení. I když jsou v tomto příkladu tři příkazy v transakci, dva z nich jsou potvrzeny. Ve stejném příkladu, pokud by byla chyba způsobena nesprávným datovým typem, bylo by to natolik závažné, aby si vyžádalo provedení vrácení zpět a žádný z příkazů by nebyl potvrzen.
Vzhledem k tomu, že není vždy jasné, zda transakce bude potvrzena nebo vrácena zpět, je nezbytné přidat zpracování chyb transakcí.