Rollback og SavePoint i SQL:En klar skille
Både `Rollback` og` SavePoint` er SQL -kommandoer som brukes til å administrere transaksjonstilstander, men de tjener forskjellige formål.
Rollback:
* Formål: Tilbakestiller databasen til en tidligere stat ved å angre alle endringer som er gjort i den nåværende transaksjonen.
* Scope: Angrer alt siden transaksjonens start.
* eksempel:
`` SQL
- Start en transaksjon
Begynn transaksjon;
- Sett inn noen data
Sett inn kunder (navn, e -post) verdier ('John Doe', '[email protected]');
Sett inn ordrer (CustomerId, OrderDate) verdier (1, '2023-10-27');
- Rollback Alle endringer gjort i transaksjonen
Rollback -transaksjon;
- Nå er databasen tilbake til staten før transaksjonen startet.
`` `
SavePoint:
* Formål: Markerer et spesifikt punkt innenfor en transaksjon for potensielle tilbakevendinger.
* Scope: Tillater bare å rulle tilbake til det definerte lagringspunktet, og bevare endringer gjort etter det.
* eksempel:
`` SQL
- Start en transaksjon
Begynn transaksjon;
- Sett inn noen data
Sett inn kunder (navn, e -post) verdier ('jane doe', '[email protected]');
- Lag et Savepoint
SavePoint MySavePoint;
- Sett inn mer data
Sett inn ordrer (CustomerId, OrderDate) verdier (2, '2023-10-28');
- Rullback til Savepoint
Rollback -transaksjon til MySavePoint;
- Nå vil databasen være tilbake til staten etter den første innsatsen, og holde ordren plassert etter lagringspunktet.
`` `
Sammendrag:
| Funksjon | Rollback | SavePoint |
| --- | --- | --- |
| Formål | Angre alle endringer i den nåværende transaksjonen | Rollback til et spesifikt punkt innenfor transaksjonen |
| omfang | Hele transaksjonen | Spesifikt punkt |
| Resultat | Databasen vender tilbake til staten før transaksjonen | Databasen vender tilbake til staten på Savepoint |
Nøkkelforskjeller:
* `Rollback` Uten å sparepunkt angir alle endringer i transaksjonen.
* `Rollback` med et SavePoint vender tilbake databasen til staten ved Savepoint, og kasserer endringer gjort etter den.
når du skal bruke hvilke:
* Rollback: Bruk når du vil forkaste alle endringer i en transaksjon, vanligvis på grunn av feil eller dataforhold.
* SavePoint: Bruk når du vil rulle tilbake til en spesifikk tilstand i en transaksjon, og bevare endringer gjort etter Savepoint. Dette er nyttig for komplekse operasjoner der du trenger å angre spesifikke deler av transaksjonen uten å påvirke hele prosessen.