Ich habe ein Problem mit X ++. Lets sagen, dass ich eine Transaktion haben, wie dieseX ++ ttsbegin und ttsAbort
Custtable custTable;
ARandomTable mytable;
;
ttsBegin;
select forUpdate custTable where custTable.AccountNum == '4000';
custTable.NameAlias = custTable.Name;
custTable.update();
ttsBegin;
select forUpdate mytable where mytable.myField == 'abc';
mytable.myField = 'xyz';
mytable.update();
//ups something wrong happened... please abort the last
ttsAbort;
ttsCommit;
in Pseudo-Code sieht Warum die ttsAbort die gesamte Transaktion abbrechen und nicht derjenige, der zuletzt begonnen? Gibt es eine Möglichkeit, es zu vermeiden?
Einige gute Antworten unten.Wenn möglich, sollte die '// ups etwas falsch passiert 'in eine' checkX' Methode konvertiert werden, die vor dem ersten oder sogar zweiten 'ttsBegin;' –