Hallo!
> > Ich dachte, dass mit @@Identity die ID auf die Verbindungen begrenzt
> > ausgegeben wird.
> > Bei mehreren gleichzeitigen Verbindungen w�rde dann die ID
> zum Insert
> > dieser Verbinunden liefern.
> > Oder stimmt das nicht?
> > W�rde es auch in einer Stored Procedure nicht so funktionieren?
> >
> das �berlege ich schon seit einer halben Stunde ;-)
> Joachim oder die Database-Liste wei� sicher mehr dazu.
SELECT SCOPE_IDENTITY() direkt nach INSERT INTO, also im gleichen Command
ohne Trigger funktioniert einwandfrei und liefert den letzten vom Command
erzeugten ID-Wert in der aktuellen Sitzung und in der aktuellen
Tabelle/View. Ohne Trigger liefert @@IDENTITY das gleiche Ergebnis,
beschr�nkt das aber nur auf die aktuelle Sitzung.
Wenn ein INSERT in einer Tabelle per Trigger einen INSERT in einer weiteren
Tabelle ausf�hrt und dabei in beiden Tabellen ID-Werte erzeugt werden,
liefert @@IDENTITY den ID-Wert der zweiten und SCOPE_IDENTITY() den ID-Wert
der ersten Tabelle.
Mit IDENT_CURRENT('tablename') wird ebenfalls der letzte erzeugte ID-Wert
ausgegeben, allerdings beschr�nkt auf Sitzung, G�ltigkeitsbereich und
Tabelle.
Es ist halt wichtig, dass SELECT @@IDENTITY unmittelbar nach dem INSERT im
gleichen Command-Objekt erfolgt. Dann funktioniert @@IDENTITY immer. F�gt
man mehrere Datens�tze innerhalb eines Commands in mehrere Tabellen ein,
kann IDENT-CURRENT n�tzlich sein, aber was hindert einen daran, das SELECT
@@IDENTITY immer unmittelbar nach dem INSERT auszuf�hren? Und wenn man
wirklich mal per Trigger mehrere Datens�tze in der gleichen Tabelle erzeugen
muss, kann SCOPE_IDENTITY n�tzlich sein aber nur dann, wenn man dabei auch
eine Trigger-Endlos-Schleife vermeidet.
Freundliche Gr��e
Joachim van de Bruck
_______________________________________________
Asp.net mailing list
[EMAIL PROTECTED]
http://www.glengamoi.com/mailman/listinfo/asp.net