Zitat Zitat von Fuerchau Beitrag anzeigen
Mehr als 1 Satz zu sperren ist tatsächlich nur unter Commit möglich, und dann auch nur im Modus, ich glaube *CS, der auch gelesene Sätze sperrt. Dies ist aber i.d.R. kein empfohlener Modus, *CHG (Read Commited) ist da eher normal und der sperrt nicht beim Lesen.
Meint: einen Satz pro Cursor! Commit level *CHG ist nun mal gerade read uncommited, sprich: lies jeden Schmutz und nur für Auswahl Subfile Anzeigen zu gebrauchen. Sperrlevel *CS liest zwar nur gültige Sätze (read commited), gibt den Satz aber frei, wenn der nächste gelesen wird und der Satz nicht geschrieben wurde. Sperrlevel *ALL ist das, was der Standard unter cursor stability versteht: keine uncommited reads, gelesene Sätze bleiben bis Transaktionsende gesperrt, unabhängig davon ob sie geändert wurden.

Für das diskutierte Beispiel wäre Sperrlevel *ALL und Verarbeitung mit SQL Cursor mit where clause angemessen!!! Die Teilauswahl wird verarbeitet wie ein Satz, Sätze außerhalb der Auswahl werden nicht gesperrt (weil nicht gelesen).

D*B,

der vehement zum Einsatz von Commit rät!!! Umstellung auf SQL ohne Commit ist ein ernsthafter Fehler, (fast) immer und (fast) überall!!!