2016-05-31 6 views
0

Angenommen, ich erstelle eine Tabelle in einer RDBMS-Datenbank und erstelle ein ganzzahliges Feld darin. Jetzt habe ich zwei Clients gleichzeitig ändern diesen Integer-Feldwert für den gleichen Datensatz, sagen Client C1 setzt es auf 1 und gleichzeitig Client C2 setzt es auf 2 für den gleichen Datensatz R1.Datenbanktransaktionsintegrität und Atomarität

  1. Auf welchen Wert wird das Feld gesetzt? Wie wirkt sich das aus, wenn C1 und C2 diesen Wert innerhalb einer Transaktion setzen?
  2. Wenn sowohl C1 als auch C2 den Wert innerhalb einer Transaktion setzen, ist die Festschreibung für beide erfolgreich?

(Haben die Antworten auf die Fragen 1 und 2 sind abhängig von der RDBMS oder gibt es eine Konvention darüber, wie das System verhalten?)

Antwort

0

Die begehen einer Transaktion kann entweder erfolgreich sein oder scheitern. Im Fall von zwei parallelen Transaktionen, die auf dasselbe Feld schreiben, wird nur einer in Ihrem Fall erfolgreich sein.

In Abhängigkeit von RDBMS könnten die Transaktionen jedoch sagen "mit 1 erhöhen" anstatt "auf 1 setzen" und in diesem Fall gibt es keine Kollision und beide Transaktionen können fortfahren.

+0

Nur ein Erfolg hängt von jedem RDBMS ab? Oder versagen alle RDBMS zufällig? –

+0

Lesen Sie die Dokumentation des betrachteten RDBMS. – PureW