sql / expert
Snippet
Transaktionale Konsistenz durch aufgeschobene Constraints
Aufgeschobene Constraints ermöglichen vorübergehende Verletzungen der referenziellen Integrität innerhalb einer Transaktion. Dies ist entscheidend für die Lösung von zirkulären Abhängigkeiten, bei denen sich zwei Tabellen gegenseitig referenzieren, sodass der finale COMMIT den Zustand validiert.
snippet.sql
1
2
3
4
5
6
SET CONSTRAINTS ALL DEFERRED;INSERT INTO teams (team_id, captain_id) VALUES (1, 10);INSERT INTO players (player_id, team_id) VALUES (10, 1);COMMIT;
Erklärung
1
SET CONSTRAINTS ALL DEFERRED;
Weist die Datenbank an, alle Constraint-Prüfungen bis zum Ende der aktuellen Transaktion aufzuschieben.
2
COMMIT;
Der Zeitpunkt, an dem die Datenbank alle aufgeschobenen Integritätsprüfungen durchführt. Schlägt eine fehl, wird die gesamte Transaktion zurückgerollt.