Rollback instruction - programare sql

Instrucțiunea ROLLBACK returnează tranzacția în starea inițială sau la un punct de salvare prestabilit (SAVEPOINT) specificat. De asemenea, instrucțiunea ROLLBACK închide toate cursoarele deschise.







Cuvinte cheie

Un cuvânt cheie suplimentar, care, de fapt, nu contează.

Instrucțiunea AND CHAIN ​​determină ca DBMS să înceteze tranzacția curentă, dar mediul de tranzacție (de exemplu nivelul de izolare a tranzacțiilor) rămâne în uz comun pentru următoarea tranzacție. Clauza AND NO CHAIN ​​completează pur și simplu tranzacția (astfel încât sistemul să sosească și implicit).

LA SAVEPOINT nume_pagina_pagină

Vă permite să nu anulați întreaga tranzacție, dar să o reintroduceți la punctul de salvare specificat (adică este efectuată o revocare parțială). Parametrul storage_name poate fi o expresie constantă sau o variabilă. Dacă nu există puncte de salvare active, instrucțiunea va returna o eroare. Dacă clauza SAVEPOINT TO este omisă, toți cursoarele sunt închise. Dacă este specificată clauza TOVEPOINT TO, numai cursoarele care au fost deschise de instrucțiunea SAVEPOINT corespunzătoare sunt închise.

În plus față de anularea operațiunilor unice de manipulare a datelor, cum ar fi INSERT, UPDATE sau DELETE (sau sub formă de pachete), instrucțiune ROLLBACK anulează tranzacția până la ultima instrucțiune START depus TRANZACȚIE, SET TRANSACT / ON sau SAVEPOINT.

Reguli generale

Instrucțiunea ROLLBACK este utilizată pentru a anula tranzacția. Acesta poate fi utilizat pentru a anula tranzacțiile care sunt declanșate în mod explicit (utilizând instrucțiunea START TRAN) sau implicit, utilizând o instrucțiune de inițiere a tranzacției. Acesta poate fi, de asemenea, utilizat pentru a anula tranzacțiile implicite care sunt pornite fără instrucțiunea START'TRAN. Instrucțiunile ROLLBACK și COMMIT se exclud reciproc.

Cei mai mulți oameni asociază cu termenul "tranzacție" comenzi precum INSERT, UPDATE și DELETE. Cu toate acestea, tranzacțiile implică o mare varietate de echipe. Lista acestor comenzi este diferită pe diferite platforme, dar, de regulă, aceasta include comenzi care schimbă structurile de date și de baze de date și sunt înregistrate de mecanismul de logare a bazei de date. Conform standardului ANSI, utilizând instrucțiunea ROLLBACK, puteți anula orice instrucțiuni SQL.

Sfaturi și trucuri de programare

Platforma DB2 acceptă forma de bază a instrucțiunilor standard ANSI. Propunerea [AND [NO] CHAIN] nu este acceptată. (De asemenea, rețineți că DB2 nu acceptă instrucțiunea START TRANSACTION, astfel încât toate tranzacțiile din DB2 sunt inițiate implicit.) Sintaxa instrucțiunii ROLLBACK în DB2 este după cum urmează.

ROLLBACK [WORK] [SAU SAVEPOINT nume de stocare]

Mai multe declarații SET în DB2 nu sunt acoperite de sistemul de control al tranzacției, și, prin urmare, acestea nu pot fi rulate înapoi. Aceasta include următoarea declarație: SET CONNECTION SET DEFAULT CURRENT TRANSFORM GROUP, SET GRADUL DE CURENT, SET CURRENT EXPLICAȚI MODE, SET CURRENT EXPLICAȚI SNA PSHOT, SET CURRENT PA CKA GESET, SET CURRENT QUERY OPTIMIZARE, SET CURRENT REFRESH AGE, SET EVENT MONITOR STATE, SETPASSTHRU, SET PATH, SET si SET SCHEMA SERVER OPTION.

Platforma DB2 efectuează o revocare implicită dacă elementul de activitate nu reușește.

Platforma MySQL acceptă numai cel mai simplu mecanism de derulare înapoi, și chiar și atunci trebuie să declare fiecare tabel, cu referire la care puteți executa instrucțiuni ROLLBACK cu privire la modul de a asigura tranzacții (tranzacții în condiții de siguranță). tranzacții sigure pentru masă - un tabel care este declarat cu InnoDB de proprietate sau de BDB. Pentru mai multe informații, consultați secțiunea privind instrucțiunea CREATE TABLE.







ROLLBACK [SAU SAVEPOINT nume de stocare]

MySQL permite executarea instrucțiunilor legate de tranzacții pentru tabele nesigure, însă aceste instrucțiuni sunt pur și simplu ignorate și tranzacțiile sunt efectuate automat. Dacă utilizați instrucțiunea ROLLBACK într-o tabelă nesigură, nu veți revoca modificările.

În mod implicit, MySQL rulează în modul AUTOCOMMIT, unde toate modificările de date sunt scrise automat pe disc. Puteți dezactiva modul A UTOCOMMIT prin emiterea comenzii SET'AUTOCOMMIT = 0. De asemenea, puteți monitoriza execuția automată a tranzacțiilor utilizând o instrucțiune utilizând comenzile BEGIN și BEGIN WORK.

Platforma MySQL efectuează automat o instrucțiune COMMIT implicită la sfârșitul oricare dintre situațiile: ALTER TABLE, BEGIN, CREATE INDEX, DROP DATABASE, DROP TABLE, RENAME TABLE și trunchiați.

MySQL acceptă răsturnarea parțială utilizând valorile de salvare de la versiunea 4.0.14.

Oracle acceptă formularul ANSI al instrucțiunii ROLLBACK cu o clauză suplimentară FORCE.

Instrucțiunea ROLLBASC elimină toate modificările de date efectuate în tranzacția deschisă curentă (sau după punctul de recuperare existent). De asemenea, toate blocările utilizate de tranzacție sunt șterse, toate valorile de salvare sunt șterse, toate modificările tranzacției curente sunt anulate și tranzacția este terminată.

Instrucțiunea ROLLBACK ... apoi SAVEPOINT redă partea din tranzacție care urmează după punctul de salvare. Pentru mai multe informații, consultați "Instrucțiunea SAVEPOINT".

Implementarea instrucțiunii ROLLBACK în Oracle este aproape de standardul ANSI, cu excepția clauzei FORCE. Instrucțiunea ROLLBACK FORCE anulează o tranzacție dubioasă distribuită. Pentru a executa această instrucțiune, trebuie să aveți privilegiul FORCE TRANSACTION. Clauza FORCE nu poate fi utilizată cu clauza [SAVEPOINT]. Instrucțiunea ROLLBACK FORCE poate afecta nu tranzacția curentă, ci tranzacția specificată în parametrul "text". Parametrul "text" trebuie să fie ID-ul tranzacției locale sau globale pe care doriți să îl anulați. (Aceste tranzacții și ID-urile acestora sunt descrise în detaliu în vizualizarea sistemului Oracle DBA_2PC_PENDING.)

De exemplu, poate fi necesar să returnați tranzacția curentă până la salvarea salariului. Cele două comenzi de mai jos sunt echivalente.

ROLLBACK WORK LA SAVEPOINT salary_adjustment; ROLLBACK TO salary_adjustment;

În exemplul următor, redobândim o tranzacție dubioasă distribuită.

ROLLBACK FORCE '45 .52.67 '

PostgreSQL

Platforma PostgreSQL acceptă forma de bază a instrucțiunii SC ROLLBA, dar nu acceptă puncte de salvare.

PostgreSQL

Instrucțiunea ROLLBA SC elimină toate modificările de date efectuate în tranzacția deschisă curentă. Dacă nu există tranzacții deschise, instrucțiunea generează o eroare. PostgreSQL acceptă atât clauza WORK, cât și clauza TRANSA CTION, nu este acceptată revizuirea la punctul de salvare. Platforma PostgreSQL acceptă cuvântul cheie ABORT ca sinonim pentru ROLLBACK.

SQL Server

Platforma SQL Server acceptă cuvintele cheie WORK și TRAN. Singura diferență dintre cele două este că instrucțiunea ROLLBACK WORK nu vă permite să întoarceți tranzacția specificată la punctul de salvare specificat.

Dacă instrucțiunea ROLLBACK este utilizată fără cuvintele cheie WORK sau TRAN, atunci anulează toate tranzacțiile deschise în prezent. Instrucțiunea ROLLBACK dezactivează, de regulă, blocarea, dar blocările nu sunt îndepărtate dacă are loc revenirea la punctul de salvare.

SQL Server vă permite să specificați un nume de tranzacție specific în plus față de numele punctului de salvare. Puteți să le specificați direct sau utilizând variabilele din codul Transact-SQL.

Dacă instrucțiunea este executată ROLLBACK TRANZACȚII într-un declanșator, anulează toate modificările de date, inclusiv cele de declanșare ROLLBACK înainte de instrucțiuni de depunere. declanșatoare imbricate nu sunt executate în cazul în care acestea sunt în textul trăgaciului după ROLLBACK. Cu toate acestea, instrucțiunile care vin în trăgaciul după ROLLBACK, această afirmație nu are nici un efect. comandă ROLLBACK este similar cu instrucțiunea COMMIT în planul de investiții, setarea la zero @TRANSCOUNT variabile de sistem (pentru mai multe informații despre controlarea tranzacții în SQL Server declanșatori imbricate, consultați „Instrucțiunile SOMMIT“ secțiune).

Următorul este un pachet Transact-SQL care utilizează instrucțiunile COMMIT și ROLLBACK pe Microsoft SQL Server. În acest exemplu, se introduce o înregistrare în tabelul de vânzări. Dacă apare o eroare în timpul inserării, tranzacția se întoarce. Dacă inserarea este reușită, tranzacția este angajată.

Informații suplimentare despre acest subiect

Reguli și metode de utilizare a instrucțiunii REVOKE în baze de date pe diferite platforme







Articole similare

Trimiteți-le prietenilor: