Rollback en SavePoint in SQL:een duidelijk onderscheid
Zowel `Rollback` als` SavePoint` zijn SQL -opdrachten die worden gebruikt om transactietoestanden te beheren, maar ze dienen verschillende doeleinden.
Rollback:
* Doel: Reset de database in een eerdere status door alle wijzigingen binnen de huidige transactie ongedaan te maken.
* Scope: Maak alles ongedaan sinds het begin van de transactie.
* Voorbeeld:
`` `SQL
- Start een transactie
Begin met transactie;
- Voeg enkele gegevens in
Invoegen in klanten (naam, e -mail) waarden ('John Doe', '[email protected]');
Invoegen in orders (CustomerID, OrderDate) waarden (1, '2023-10-27');
- Rol alle wijzigingen in de transactie op terug
Rolback -transactie;
- Nu is de database terug naar zijn staat voordat de transactie begon.
`` `
SavePoint:
* Doel: Markeert een specifiek punt binnen een transactie voor potentiële terugdraaien.
* Scope: Laat het alleen terug naar het gedefinieerde SavePoint, met behoud van wijzigingen die erna zijn aangebracht.
* Voorbeeld:
`` `SQL
- Start een transactie
Begin met transactie;
- Voeg enkele gegevens in
Invoegen in klanten (naam, e -mail) waarden ('jane doe', '[email protected]');
- Maak een opslagpunt
SavePoint MysavePoint;
- Voeg meer gegevens in
Invoegen in orders (CustomerID, OrderDate) waarden (2, '2023-10-28');
- Rolback naar het SavePoint
Rolback -transactie naar MysavePoint;
- Nu zal de database na de eerste invoeging terug in de status zijn, waardoor de bestelling na het SavePoint wordt geplaatst.
`` `
Samenvatting:
| Feature | Rollback | SavePoint |
| --- | --- | --- |
| doel | Maak alle wijzigingen in de huidige transactie los | Rolback naar een specifiek punt binnen de transactie |
| Scope | Volledige transactie | Specifiek punt |
| resultaat | Database keert terug naar zijn staat vóór de transactie | Database keert terug naar de status bij het SavePoint |
Belangrijkste verschillen:
* `Rollback` zonder een SavePoint ongedaan maken alle wijzigingen in de transactie ongedaan.
* `Rollback` met een SavePoint keert de database terug naar de status in het SavePoint, waarbij wijzigingen erna worden aangebracht.
Wanneer te gebruiken wat:
* Rollback: Gebruik wanneer u alle wijzigingen binnen een transactie wilt weggooien, meestal vanwege fouten of gegevensconsistenties.
* savePoint: Gebruik wanneer u binnen een transactie naar een specifieke status wilt terugdraaien, waarbij wijzigingen na het SavePoint worden aangebracht. Dit is handig voor complexe bewerkingen waarbij u specifieke delen van de transactie ongedaan moet maken zonder het hele proces te beïnvloeden. |