Kézi rollback - SQL programozás

ROLLBACK tranzakció használati visszatér eredeti állapotába, vagy egy adott, előre meghatározott mentési pont (mentési pont). Szintén ROLLBACK utasítást zárja be a megnyitott kurzorok.

Kulcsszavak

Választható kulcsszó, amely lényegében nem játszik szerepet.

ÉS LÁNC nyilatkozat okoz az adatbázist, hogy befejezze a jelenlegi tranzakció, de a tranzakciós környezet (például tranzakciós izolációs szint) marad a közös használatra a következő tranzakciót. Ajánlat, se lánc egyszerűen befejezi a tranzakciót (a rendszer fogadja, és az alapértelmezés).

A mentési pont imya_tochki_sohraneniya

Lehetővé teszi, hogy ne mondja az egész tranzakció, és visszaállíthatja azt, hogy mentse a megadott helyen (pl végre egy részleges rollback). imya_tochki_sohraneniya paraméter lehet egy állandó kifejezés vagy változó. Ha nincs aktív védelmi pontokat, az utasítás hibaüzenetet. Ha TO mentési pont kikötés nincs megadva, az összes kurzorok zárva vannak. Ha TO mentési pont javaslat szerint csak azok közeli kurzorok, hogy nyitva volt a megfelelő mentési pont nyilatkozatot.

Amellett, hogy megszakítja az egységes adatkezelési műveletek, mint INSERT, UPDATE vagy DELETE (vagy csomagkapcsolt) ROLLBACK utasítás törli a tranzakciót, hogy az utolsó utasítást benyújtott START tranzakció SET TRANSACT / ON vagy a mentési pontra.

Általános szabályok

ROLLBACK utasítást arra használjuk, hogy törölje az ügyletet. Ezt fel lehet használni, hogy törölje az ügyletet, kifejezetten kezdődött (utasítások segítségével START TRAN), vagy közvetett módon, a kezdeményező tranzakció utasításokat. Azt is fel lehet használni, hogy törölje az implicit tranzakció nélkül indult START'TRAN utasításokat. Utasítás visszaállítás és COMMIT kölcsönösen kizárják egymást.

A legtöbb embernek a kifejezés „Tranzakció” parancsokat, mint INSERT, UPDATE, és DELETE. Azonban a tranzakciók között a legkülönbözőbb parancsokat. E lista parancsok eltérő a különböző platformokon, de a szabály, hogy parancsokat tartalmaz, amelyek megváltoztatják az adatok és az adatbázis-struktúra és mechanizmus során, hogy regisztrálja az adatbázis napló. Az ANSI szabvány segítségével a ROLLBACK nyilatkozat visszavonható bármely SQL utasítást.

Tippek és trükkök

DB2 platform támogatja az alapvető formája az ANSI szabvány utasításokat. Nem támogatta a javaslatot, [és [NO] LÁNC]. (Fontos megjegyezni, hogy a DB2 nem támogatja az utasítás START tranzakció, így az összes tranzakció kezdődött burkoltan DB2.) Syntax ROLLBACK utasítást DB2 következő.

ROLLBACK [MUNKA] [TO mentési pont imya_tochki_sohraneniya]

Több SET kimutatások DB2 nem terjed ki a tranzakció-ellenőrző rendszer, és ezért azokat nem lehet visszafordítani. Ez magában foglalja a következő nyilatkozatot: SET CSATLAKOZTATÁSRA SET CURRENT DEFAULT TRANSFORM csoport, amely jelenlegi szintjét, SET CURRENT EXPLAIN MODE SET CURRENT EXPLAIN SNA PSHOT, SET CURRENT PA CKA GESET, SET CURRENT lekérdezés optimalizálási, SET CURRENT FRISSÍTÉS AGE, SET EVENT MONITOR ÁLLAM, SETPASSTHRU, SET PATH SET séma és SET Server beállítás.

DB2 platform végez implicit rollback, ha a referencia elem meghibásodik.

MySQL platform csak akkor támogatja a legegyszerűbb visszagörgetési mechanizmust, és még akkor is, hogy állapítsa meg az egyes asztal, amelyre való hivatkozás akkor végre ROLLBACK utasítást, hogy hogyan védheti ügyletek (tranzakciók biztonságos). Biztonságos tranzakciók az asztalra - egy táblázatot, deklarált az ingatlan InnoDB vagy BDB. További információkért tekintse meg a szakaszt a CREATE TABLE utasítás.

ROLLBACK [TO mentési pont imya_tochki_sohraneniya]

MySQL segítségével elvégzésére utasításokat kapcsolatos tranzakció kezelésére, kapcsolatban nem biztonságos asztalok, de ezek az utasítások figyelmen kívül hagyja, és az ügyletek végrehajtását automatikusan történik. Abban az esetben, ROLLBACK utasítást nem biztonságos táblázatban rollback változások nem kerül sor.

Alapértelmezésben a MySQL fut AUTOCOMMIT módban, ahol minden adat módosítását automatikusan rákerül a lemezre. Akkor letilthatja a UTOCOMMIT üzemmódban a parancs SET'AUTOCOMMIT = 0. Azt is ellenőrzik az automatikus tranzakcióinak végrehajtása egyetlen utasítás segítségével a BEGIN és elkezdték a munkát.

MySQL platform automatikusan elvégzi az implicit COMMIT utasítás végén bármelyik nyilatkozatai: ALTER TABLE, kezd, CREATE INDEX, DROP DATABASE, DROP TABLE, Tábla átnevezése és vágjon.

MySQL támogatja a részleges visszavonás segítségével mentési pontok verzió óta 4.0.14.

Az Oracle támogatja az ANSI forma utasításokat ROLLBACK további javaslat FORCE.

ROLLBASK utasítás törli az összes adatot módosítani kell a jelenlegi nyitott ügyletek után (vagy már meglévő helyreállítási pont). Szintén szünetek zár használt tranzakció törlődik minden mentési pontok, a változások az aktuális tranzakció, a tranzakció befejeződik.

Utasítás ROLLBACK ... TO mentési pont tekercs vissza a tranzakció részeként, miután elérte a pontot menteni. olvassa el a „Használati mentési pont» részt további információkért.

A visszaszorítás végrehajtását nyilatkozatot Oracle közel van a standard ANSI, kivéve FORCE ajánlatokat. Utasítás ROLLBACK FORCE törli kétség elosztott tranzakció. Ahhoz, hogy végre ez a kijelentés, akkor a kiváltság FORCE tranzakciót. FORCE ajánlatot nem lehet használni a javaslatot [mentési pont]. Utasítás ROLLBACK erő nem befolyásolja a jelenlegi tranzakció, a tranzakció meghatározott „szöveg” paramétert. A „szöveg” csak helyi vagy globális tranzakció azonosító, meg akarja szakítani. (Az ilyen ügylet azonosítót és részletesen az Oracle DBA_2PC_PENDING rendszer teljesítményét.)

Például előfordulhat, hogy vissza kell térnie az aktuális tranzakciót a mentési pontra salary_adjustment. A következő két parancs egyenértékű.

ROLLBACK MUNKA mentési pont salary_adjustment; Visszaállítási salary_adjustment;

A következő példában fogjuk gurulást a kétes elosztott tranzakció.

ROLLBACK FORCE '45 .52.67 "

PostgreSQL

PostgreSQL platform támogatja alapforma ROLLBA SC utasításokat, de nem támogatja a mentési pontokat.

PostgreSQL

Utasítás ROLLBA SK töröl minden adatot átalakításokat végeztek a jelenlegi nyitott tranzakciót. Ha nem nyitott tranzakciók az utasítás hibát generál. PostgreSQL támogatja a javaslatot, a munka, és ajánlatot TRANSA licit, nem támogatott tekercs vissza a pontot menteni. PostgreSQL platform támogatja kulcsszó ABORT szinonimájaként ROLLBACK.

SQL Server

Platform SQL Server támogatja a kulcsszavak a munka és a TRAN. Az egyetlen különbség a kettő között abban rejlik, hogy a nyilatkozat ROLLBACK MUNKA megakadályozza visszaállíthatja a megadott tranzakció a megadott mentési pont.

Ha a ROLLBACK utasítást nélkül használjuk a kulcsszó munka vagy a TRAN, hogy törli az összes megnyitott tranzakciót. Útmutató a ROLLBACK, mint általában, kikapcsolja a zár, de a zár nem lehet eltávolítani, ha van egy visszaállítási pontot menteni.

SQL Server lehetővé teszi, hogy meghatározza továbbá a konkrét imeni_tochki_sohraneniya imya_tranzaktsii. Megadhatja azokat közvetlenül vagy használja a változót a Transact-SQL-kódot.

Ha az utasítás végrehajtása ROLLBACK ügylet a ravaszt, akkor törli az összes adatot módosítások, beleértve azokat készült kioldó ROLLBACK előtt bejelentés utasításokat. Beágyazott kiváltó nem kerülnek végrehajtásra, ha azok a szövegben a ravaszt, miután a ROLLBACK utasítást. Azonban az utasításokat, hogy jöjjön a ravaszt után ROLLBACK, ez a kijelentés nincs hatása. ROLLBACK parancs hasonló a COMMIT utasítást a beruházási tervet, nullára a rendszert változó @TRANSCOUNT (további információkért ellenőrző tranzakció SQL Server beágyazott triggerek, lásd „SOMMIT utasítások” című fejezetet).

Az alábbiakban egy-SQL csomagot a COMMIT utasítás és az ROLLBACK a Microsoft SQL Server. Ebben a példában az asztalra helyezünk a lemezeladások. Ha hiba történik, amikor behelyezi, van visszaállítását a tranzakciót. Ha a betét sikeres, a tranzakció véglegesítésre.

További információ

A szabályok és eljárások a REVOKE nyilatkozat adatbázisokban a különböző platformokon

Kapcsolódó cikkek