haben wir einen Sybase ASE 15 DB und etwas seltsam letzte Woche passiert ist, es sieht aus wie ein select auf eine neu eingefügte Zeile vielleicht direkt nach dem Einsatz verpaßtSybase fehlender Einsatz
unsere Tabelle verwendet/Ende-Zeitstempel für milestoning beginnen; ein Beispiel ist
id number,
name varchar(32),
start timestamp,
end timestamp;
ein "Update" wäre ein Update auf bestehenden Ende; und ein Einfügen des neuen Datensatzes; Beispiel
id name start end
1 alice 2010-01-01 00:00:00 3000-01-01 00:00:00
auf Update
id name start end
1 alice 2010-01-01 00:00:00 2010-01-01 08:00:00
1 bob 2010-01-01 08:00:00 3000-01-01 00:00:00
werden und sowohl Update und Insert wird in der gleichen Transaktion
nun mit Reihen- Verriegelungs- und Index (ID, Beginn, Ende) durchgeführt, bei der Auswahl mit Isolationsstufe 1, bei Auswahl Abfrage:
select * from table where id=1 and start<=getdate() and end>getdate()
Idealerweise wenn Auswahl ausgeführt wird d Beim Update sollte es bis zum Commit blockieren und die letzte Zeile zurückgeben.
Jedoch in unserem Fall sahen wir die Blockierung, aber keine Zeilen zurückgegeben!
Das bedeutet für mich, dass wenn die Auswahl ausgeführt wird, sieht das Update, aber nicht die Einfügung; ist das möglich?
ist es irgendwie möglich, commit, die neue Zeile eingefügt wird, aber der Index ist nicht aktualisiert daher die Auswahl nicht die neue Zeile sehen?
Dank