Ich habe TableA und TableB in SQL Server 2008Holen Sie die Identität eines Einsatzes in einem Trigger
TableA haben einen Trigger, der ausgelöst wird, nachdem INSERT & UPDATE auf den Auslöser Im in TableB Einfügen so meine Frage ist, wie Kann ich die eingefügte ID von TableB bekommen? FROM INSERTED haben die Informationen des Datensatzes in TableA?
ALTER TRIGGER [dbo].[trg_up_move] ON [dbo].[TableA] AFTER INSERT, UPDATE
AS
BEGIN
DECLARE @idMovINS INT
DECLARE @stationINS char(8)
DECLARE @idWorkerINS INT
DECLARE @statusINS TINYINT
SELECT @idMovINS=id_mov FROM INSERTED
SELECT @stationINS=station_number FROM INSERTED
SELECT @idWorkerINS=id_worker FROM INSERTED
SELECT @statusINS=status_mov FROM INSERTED
-- CODE
-- MORE CODE
-- MUCH MORE CODE
IF @SOMEVAL='WISE DECISION'
BEGIN
DECLARE @idTableB INT
INSERT INTO TableB (FieldA,FieldB,FieldC)VALUES(@idWorkerINS,@stationINS,'More info')
--SET @[email protected]@IDENTITY
--SET @idTableB=SCOPE_IDENTITY()
--MAKE SOME OTHER THINGS WITH @idTableB
END
END
Wenn ich ein hundert oder tausend Einfügungen zu TabelleA in derselben Sitzung senden. Kann ich @@ identity oder scope_identity() (ich gehe für die letzte) verwenden, um die Identität der b-Einfügung zu erhalten? Und wie bequem und sicher ist es, eine dieser beiden Funktionen zu verwenden, die jedes Mal, wenn der Auslöser ausgelöst wird, und die Zeit zum Abschließen der gesamten Triggerfunktion berücksichtigen.
Mögliches Duplikat [Was ist der Unterschied zwischen Scope \ _Identity(), Identität() @@ Identität, und Ident \ _Current?] (Http://stackoverflow.com/questions/1920558/what- is-the-difference-zwischen-scope-identity-identity-identity-and-ide) – Yuck
Mögliches Duplikat von [Wie verwende ich die OUTPUT-Klausel einer INSERT-Anweisung, um den Identity-Wert zu erhalten?] (http://stackoverflow.com/ Fragen/10999396/how-do-ich-benutze-ein-insert-statements-output-clause-um-den-Identity-Wert zu erhalten) – GSerg