Rollback och SavePoint i SQL:En tydlig åtskillnad
Både "Rollback" och "SavePoint" är SQL -kommandon som används för att hantera transaktionstillstånd, men de tjänar olika syften.
rollback:
* Syfte: Återställer databasen till ett tidigare tillstånd genom att ångra alla ändringar som gjorts inom den aktuella transaktionen.
* Omfattning: Ångrar allt sedan transaktionsstart.
* Exempel:
`` `SQL
- Starta en transaktion
Börja transaktion;
- Sätt in lite data
Infoga i kunder (namn, e -post) värden ('John Doe', '[email protected]');
Infoga i beställningar (CustomerID, OrderDate) -värden (1, '2023-10-27');
- Rollback alla ändringar som gjorts i transaktionen
Rollback -transaktion;
- Nu är databasen tillbaka till sitt tillstånd innan transaktionen startade.
`` `
SavePoint:
* Syfte: Markerar en specifik punkt inom en transaktion för potentiella rollbacks.
* Omfattning: Tillåter att rulla tillbaka endast till den definierade SavePoint och bevara ändringar som gjorts efter den.
* Exempel:
`` `SQL
- Starta en transaktion
Börja transaktion;
- Sätt in lite data
Infoga i kunder (namn, e -post) värden ('Jane Doe', '[email protected]');
- Skapa en SavePoint
SavePoint MysavePoint;
- Sätt in mer data
Infoga i beställningar (CustomerId, OrderDate) -värden (2, '2023-10-28');
- Rollback till SavePoint
Rollback -transaktion till MysavePoint;
- Nu kommer databasen tillbaka till sitt tillstånd efter den första insatsen och hålla beställningen placerad efter SavePoint.
`` `
Sammanfattning:
| Funktion | Rollback | SavePoint |
| --- | --- | --- |
| Syfte | Ångra alla ändringar i den aktuella transaktionen | Rollback till en specifik punkt inom transaktionen |
| räckvidd | Hela transaktionen | Specifik punkt |
| resultat | Databasen återgår till sitt tillstånd före transaktionen | Databasen återgår till staten vid SavePoint |
Nyckelskillnader:
* `Rollback` utan en SavePoint ångrar alla förändringar i transaktionen.
* `Rollback` med en SavePoint återgår till databasen till staten vid SavePoint och kasserar förändringar som gjorts efter den.
När ska man använda vilken:
* rollback: Använd när du vill kassera alla ändringar inom en transaktion, vanligtvis på grund av fel eller datakonsekvenser.
* Savepoint: Använd när du vill återgå till ett specifikt tillstånd inom en transaktion och bevara ändringar som görs efter SavePoint. Detta är användbart för komplexa operationer där du behöver ångra specifika delar av transaktionen utan att påverka hela processen.