Die @@identity-Variable enthält den aktuellsten Wert, der in eine IDENTITY-Spalte oder DEFAULT AUTOINCREMENT-Spalte eingefügt wurde, oder Null, wenn die letzte Einfügung keine solche Spalte hatte.
Der Wert von @@identity ist verbindungsspezifisch und wird jedes Mal inkrementiert, wenn eine Zeile in eine Tabelle eingefügt wird. Wenn eine Anweisung mehrere Zeilen einfügt, gibt @@identity den IDENTITY-Wert für die zuletzt eingefügte Zeile wieder. Wenn die betroffene Tabelle keine IDENTITY-Spalte enthält, wird @@identity auf 0 gesetzt.
Der Wert von @@identity wird vom Fehlschlag einer INSERT- oder SELECT INTO-Anweisung oder dem Zurücksetzen der Transaktion, die ihn enthalten hat, nicht betroffen. @@identity behält den zuletzt in eine IDENTITY-Spalte eingefügten Wert, selbst wenn das Festschreiben der Anweisung, die ihn eingefügt hat, fehlschlägt.
Wenn ein Einfügen referenzielle Integritätsaktionen bewirkt oder einen Trigger auslöst, verhält sich @@identity wie ein Stack. Wenn zum Beispiel ein Einfügevorgang in eine Tabelle T1 (mit einer IDENTITY- oder AUTOINCREMENT-Spalte) einen Trigger auslöst, der eine Zeile in Tabelle T2 (ebenfalls mit einer IDENTITY- oder AUTOINCREMENT-Spalte) einfügt, dann ist der Wert, der an die Anwendung oder Prozedur zurückgegeben wird, derjenige, der in T1 eingefügt wurde. Im Trigger hat @@identity den T1-Wert vor dem Einfügen in T2, und danach den T2-Wert. Der Trigger kann die Werte in lokale Variable kopieren, falls er auf beide zugreifen muss.
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |