Tapahtumien luominen ja hallinta
Aloita tapahtuma eksplisiittisesti käyttämällä BEGIN TRANSACTION -versiota tai lyhennettyä versiota BEGIN TRAN.
Kun tapahtuma on aloitettu, sen täytyy päättyä jommallakummaan seuraavista:
- VAHVISTUSTAPAHTUMA TAI
- PALAUTUSTAPAHTUMA.
Tämä varmistaa, että kaikki tapahtuman tiliotteet on sidottu yhteen tai peruutetaan yhdessä virheen ilmetessä.
Tapahtumat kestävät siihen asti, kunnes COMMIT TRANSACTION- tai ROLLBACK TRANSACTION -komento annetaan tai yhteys poistetaan. Jos yhteys poistetaan osatapahtuman kautta, koko tapahtuma peruutetaan.
Tapahtumat voivat olla sisäkkäisiä, jolloin sisemmät tapahtumat peruutetaan, jos ulompi tapahtuma peruutetaan.
Virhettä ei tunnisteta
Kun tapahtuman tiliotteet on suoritettu ilman virheitä, käytä COMMIT TRANSACTION -funktiota, joka on joskus lyhennetty COMMIT TRAN -funktioksi. Tämä tekee muutokset tietokantaan. Tämä vapauttaa myös resursseja, kuten tapahtuman aikana säilytetyt lukot.
Jos havaitaan virhe
Jos tapahtumassa ilmeni virhe, käytä ROLLBACK-komentoa.
ROLLBACK kumota kaikki tietoihin tapahtuman aikana tehdyt muutokset ja jättää ne tilaan, jossa se oli ennen tapahtuman alkua. ROLLBACK julkaisee myös tapahtuman resursseja, kuten lukituksia.
XACT_ABORT
Kun SET XACT_ABORT on KÄYTÖSSÄ, jos SQL Server aiheuttaa virheen, koko tapahtuma peruutetaan. Kun SET XACT_ABORT ei ole käytössä, vain virheen aiheuttanut lauseke peruutetaan, jos virheen vakavuus on alhainen.
Jos esimerkiksi SET XACT_ABORT on OFF, tapahtumassa on kolme tiliotinta. Kahdessa ei ole virheitä, mutta kolmas rikkoo tarkistusrajoituksen. Tässä esimerkissä, vaikka kolme laskelmaa ovat tapahtumassa, kaksi niistä on toteutettu. Samassa esimerkissä, jos virheen olisi aiheuttanut virheellinen tietotyyppi, tämä olisi ollut niin vakavaa, että palautus olisi tehty, eikä mitään lausekkeita olisi käytetty.
Koska aina ei ole selvää, sidotaanko tapahtuma vai peruutetaanko se, on tärkeää lisätä virheiden käsittely tapahtumiin.