Grund für die Verwendung @@ Identität statt scope_identity

stimmen
11

Auf einem SQL Server 2005-Datenbank, einer unserer Remote-Entwickler nur in einer Änderung an eine gespeicherte Prozedur überprüft, die eine „select scope_identity“ auf „select @@ identity“. Kennen Sie irgendwelche Gründe, warum Sie @@ Identität über scope_identity verwenden würde?

Veröffentlicht am 09/12/2008 um 18:11
quelle vom benutzer
In anderen Sprachen...                            


5 antworten

stimmen
2

Ich kann mir nicht irgend, es sei denn es einen Trigger dann eine Zeile eingefügt wurde (oder etc. zu jagen) und ich wollte wirklich, wirklich die ID dieser Trigger-Reihe eingefügt, anstatt die Zeile ich körperlich verändert.

Mit anderen Worten, nein, nicht wirklich.

  • HAFTUNGSAUSSCHLUSS: Nicht ein T-SQL-Experte :)
Beantwortet am 09/12/2008 um 18:16
quelle vom benutzer

stimmen
18

@@IDENTITYwird wieder von der aktuellen Sitzung des letzten Identitätswert ausgegeben. SCOPE_IDENTITY()gibt den letzten Identitätswert in der aktuellen Sitzung und gleichen Umfang. Sie sind in der Regel die gleichen, übernehmen aber einen Trigger genannt wird , die etwas irgendwo kurz vor der aktuellen Anweisung eingefügt. @@IDENTITYden Identitätswert durch die zurückkehren INSERT IGNORE Anweisung des Abzugs, nicht die Insert - Anweisung des Blockes. Es ist in der Regel ein Fehler , wenn er nicht weiß , was er tut.

Beantwortet am 09/12/2008 um 18:17
quelle vom benutzer

stimmen
12

Hier ist ein Link , der sie unterscheiden kann helfen

sieht aus wie:

  • IDENTITY - letzte Identität auf der Verbindung
  • SCOPE_IDENTITY - letzte Identität explizit erstellt (ausgenommen auslöst)
  • IDENT_CURRENT ( ‚tablename‘) - Last Identität in Tabelle unabhängig von Umfang oder Verbindung.
Beantwortet am 09/12/2008 um 18:20
quelle vom benutzer

stimmen
0

Wenn Sie den Auslöser wollte verwenden Sie einen anderen Auslöser hinzugefügt bekommen könnte, ist der einzige Grund, warum ich mit oben kommen kann. Selbst dann ist es gefährlich, als ein weiterer Auslöser hinzugefügt werden könnte und wieder würde man die falsche Identität bekommen. Ich vermute, dass der Entwickler nicht weiß, was er tut. Aber mal ehrlich das Beste, was zu tun ist, um ihn zu fragen, warum er die Änderung vorgenommen hat. Man könnte es wieder ändern, aber der Entwickler muss wissen, nicht wieder zu tun, wenn er nicht den Abzug Identität braucht, wie Sie es nicht das nächste Mal fangen können.

Beantwortet am 09/12/2008 um 21:44
quelle vom benutzer

stimmen
1

Vielleicht sollten Sie den Entwickler ihre Gründe bitten, die Änderung hinter machen.

Beantwortet am 09/12/2008 um 21:48
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more