Hello,
nur nochmal zur Klarstellung. Da stand vorher was von "nicht... darf" und das wurde dann zu MUSS:
Denke daran, dass der Lesevorgang für die sofort anschließende Datenveränderung immer innerhalb eines gemeinsamen LOCK_EX stattfinden [steiche:darf] muss. Ggf. musst Du nochmal lesen, wenn Du vorher schon für rein informative Zwecke unter LOCK_SH gelesen hast.
Aber Sven hatte es ja auch nochmal auf den Punkt gebracht. Die Sache mit der Datenbank wird übrigens auch im normalen Betrieb immer gerne vergessen bzw. überhaupt nicht berücksichtigt.
Deshalb hatten wie ja neulich schon einen Thread in dem ich nach einem Hash über den ganzen Datensatz gefragt hatte, um den Conflict Counter zu vermeiden...
Das ist nämlich immer dann von Interesse, wenn man auf fremde Datenbanken zugreifen muss, die ungenügend vorbereitet sind.
Ich verwende für meine Lösungen immer Trigger, die beim Update den Conflict Counter automatsich hochsetzen. Die kann man dann auch nicht umgehen. Wenn man dann noch eine Stored Procedure drum herum packt, kann man ohne Kenntnis über den passenden Conflict Counter gar kein Update mehr durchführen.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg