Rollback og SavePoint i SQL:En klar sondring
Både `Rollback 'og` SavePoint` er SQL -kommandoer, der bruges til at styre transaktionsstater, men de tjener forskellige formål.
Rollback:
* Formål: Nulstiller databasen til en tidligere tilstand ved at fortryde alle ændringer, der er foretaget inden for den aktuelle transaktion.
* Omfang: Fortryder alt siden starten af transaktionen.
* Eksempel:
`` `sql
- Start en transaktion
Begynde transaktion;
- Indsæt nogle data
Indsæt i kunder (navn, e -mail) værdier ('John Doe', '[email protected]');
Indsæt i ordrer (customerId, OrderDate) -værdier (1, '2023-10-27');
- Rollback Alle ændringer foretaget i transaktionen
Rollback -transaktion;
- Nu er databasen tilbage til sin tilstand, før transaktionen startede.
`` `
gemtepoint:
* Formål: Markerer et specifikt punkt inden for en transaktion for potentielle rollbacks.
* Omfang: Tillader kun at rulle tilbage til det definerede gemtepunkt, der bevarer ændringer foretaget efter det.
* Eksempel:
`` `sql
- Start en transaktion
Begynde transaktion;
- Indsæt nogle data
Indsæt i kunder (navn, e -mail) værdier ('jane doe', '[email protected]');
- Opret et SavePoint
SavePoint MySavePoint;
- Indsæt flere data
Indsæt i ordrer (customerId, OrderDate) -værdier (2, '2023-10-28');
- Rollback til SavePoint
Rollback -transaktion til MySavePoint;
- Nu vil databasen være tilbage til sin tilstand efter den første indsats, der holder ordren placeret efter SavePoint.
`` `
Sammendrag:
| Funktion | Rollback | SavePoint |
| --- | --- | --- |
| Formål | Fortryd alle ændringer i den aktuelle transaktion | Rollback til et specifikt punkt inden for transaktionen |
| omfang | Hele transaktion | Specifikt punkt |
| resultat | Database vender tilbage til sin tilstand inden transaktionen | Database vender tilbage til staten ved SavePoint |
Nøgleforskelle:
* 'Rollback' uden et gemtepunkt fortryder alle ændringer i transaktionen.
* 'Rollback' med en SavePoint vender databasen tilbage til staten ved SavePoint, idet de kasserer ændringer foretaget efter den.
Hvornår skal man bruge:
* rollback: Brug, når du vil kassere alle ændringer inden for en transaktion, typisk på grund af fejl eller data uoverensstemmelser.
* gemtepoint: Brug, når du vil rollback til en bestemt tilstand inden for en transaktion, og bevare ændringer foretaget efter SavePoint. Dette er nyttigt til komplekse operationer, hvor du har brug for at fortryde specifikke dele af transaktionen uden at påvirke hele processen.