2017-02-11 2 views
0

Angenommen, T1 und T2 sind SQL-Transaktionen. Was sind die endgültigen Werte von A und B nach jeder durchgeführten Transaktion?Serialisierbarkeit in SQL-Transaktion

A soll kleiner sein als Anfangs B. A 0 ist und B ist 100.
- T1 ursprünglichen A und B-Werte liest und ändert A bis 60.
- T2 ursprünglichen A und B-Werte liest, und ändert B auf 20.
- Die Transaktionen T1 und T2 haben beide die Konsistenzbedingung "A < B" beibehalten, aber was sind die endgültigen Werte von A und B?
- Konnte das mit Serializability passieren?

Obwohl T1 und T2 beide die Konsistenzbedingung beibehielten, denke ich, dass dieses Problem innerhalb der Transaktion T2 erkannt wird und daher t2 abgebrochen wird. Ich denke, die endgültigen Werte sind 60 und 100. Stimmt das? Kann dir jemand mehr Einblick geben?

Antwort

0

Es ist nicht klar, ob A und B Spalten oder Variablen sind. Wenn A und B Spalten sind, gilt Folgendes.

T2 kann die Tabelle nicht aktualisieren, bis T1 die Transaktion festschreibt. In diesem Stadium ist A = 60. Wenn Konsistenzbedingung durch eine CONSTRAINT erzwungen wird, wird die Aktualisierung in T2 fehlschlagen.