Tom: Stored Procedure ersetzen durch SQL Statement

Beitrag lesen

Hello,

Insert into tbl_GuidGF(GFId, Zaehler,RepID)
select GeschaeftFallID,(select max(Zaehler)+1 from tbl_GuidGF),GeschaeftFallID from tbl_Geschaeftfall
where GeschaeftFallID not in(select GFID from tbl_GuidGF)

Ist das bei MS-SQL erlaubt, ein (sub-)Select auf eine vom Insert betroffene Spalte zu legen?

Bei MySQL gibt es da, soweit ich weiß, heftig auf die Finger, bzw bei älteren Versionen konnte das zum Verlust der Daten führen.

Im Prinzip kannst Du nur eine mit einem Table-Lock gebundene Sequenz daraus machen

Tabelle sperren
maximalen Zähler holen
Daten mit neuem Zähler eintragen
Tabelle entsperren

Anderenfalls hinterlässt Du eine nicht behandelte Race Condition.

Ein harzliches Glückauf

Tom vom Berg

http://bergpost.annerschbarrich.de

--
Nur selber lernen macht schlau