wenn ich mehrere Prozesse in eine Datenbank schreiben lasse und von einer Sequence den CurrVal abfrage, bekomme ich dann den letzten Wert der innerhalb des aktuellen Prozesses bzw. der Transaktion vergeben wurde, oder bekomme ich den letzten globalen Wert der an irgendjemand vergeben wurde?
Ich hoffe ersteres, wäre vernünftig, aber ich wollte zur Sicherheit mal nachfragen. :o)
wenn ich mehrere Prozesse in eine Datenbank schreiben lasse
und von einer Sequence den CurrVal abfrage, bekomme ich dann
den letzten Wert der innerhalb des aktuellen Prozesses bzw.
der Transaktion vergeben wurde, oder bekomme ich den letzten
globalen Wert der an irgendjemand vergeben wurde?
Spontan hätte ich es falsch behauptet - richtig ist aber (nach testen) : jeder User sieht seine eigene letzte Nummer.
Spontan hätte ich es falsch behauptet - richtig ist aber (nach
testen) : jeder User sieht seine eigene letzte Nummer.
Hmmmm, beziehst du dich wirklich auf User oder meinst du Transaktionen? Also wie schaut es aus, wenn mehrere Prozesse mit demselben User angemeldet sind?
Zur Anwendung, der Prozess schreibt einen Datensatz in eine Tabelle und möchte dann noch einen zweiten in eine andere Tabelle schreiben der aber die erste referenziert, schon braucht man den Key.
Und die einzige Möglichkeit den rauszufinden, ist eben über die Sequence, und die muss mir den letzten Key innerhalb meiner Transaktion liefern.
Eigentlich fällt mir kein Anwendungsfall ein wo man den letzten global vergebenen Key benötigen würde.
Hmmmm, beziehst du dich wirklich auf User oder meinst du
Transaktionen?
Gemeint sind Sessions und nicht Transaktionen.
Also wie schaut es aus, wenn mehrere Prozesse
mit demselben User angemeldet sind?
Jeder sieht seine eigene.
Zur Anwendung, der Prozess schreibt einen Datensatz in eine
Tabelle und möchte dann noch einen zweiten in eine andere
Tabelle schreiben der aber die erste referenziert, schon
braucht man den Key.
Genau dafür - und nur dafür - ist das gedacht.
Und die einzige Möglichkeit den rauszufinden, ist eben über
die Sequence, und die muss mir den letzten Key innerhalb
meiner Transaktion liefern.
Du sprichst wiederholt von Transaktionen. Ich vermute einen Denkfehler dahinter: würde dieser Wert innerhalb einer Transaktion gespeichert, und hätte er mithin die Möglichkeit zum Rollback, würdest Du genau in die Probleme laufen, die Dir die Sequence abzunehmen versucht: die Werte wären nicht garantiert eindeutig.
(Denke Dir zwei Transaktionen A und B, beide selecten hintereinander von einer Sequence, Tr B macht Commit, aber TR A macht Rollback - wenn auch der Currval rollbacked würde (was ein Wort , hättest Du beim nächsten Select einen doppelten Wert).