Einzelnen Beitrag anzeigen

taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
533 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: Int-Feld nachträglich auf autoincrement setzen

  Alt 18. Sep 2012, 07:57
Beim SQL-Server kann man den letzten Wert mit SELECT @@Identity abfragen; aber das ist Gemurkse.
Was würdest du wohl für einen Wert bekommen, wenn zwischendurch weitere Zeilen eingefügt wurden?
Absolut kein Gemurkse. Die Abfrage bezieht sich auf die aktuelle Session (aber nicht auf den eigenen scope).
Eine Einschränkung: Wenn ein Trigger einen Insert macht würde mit SELECT @@Identity die ID des vom Trigger inserteten Datensatzes zurückkommen.

Um auch dieses "Problem" zu umgehen gibt es SELECT SCOPE_IDENTITY().
Mit dieser wird wirklich nur die letze ID der eigenen Session (und des eigenen scopes) zurückgegeben.

Hier noch ausgedeutscht (in englisch)


Gut hab ich mich mal wieder mit Thema beschäftigt. Scheinbar ist spurlos an mir vorbeigegangen dass
es seit MSSQLSERVER 2005 OUTPUT Clause gibt. Damit können sogar Multiple Inserts zurückgelesen werden.
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.

Geändert von taveuni (18. Sep 2012 um 08:09 Uhr) Grund: Output Caluse hinzugefügt
  Mit Zitat antworten Zitat