У меня есть TableA и TableB в SQL Server 2008.
У TableA есть триггер, который срабатывает после INSERT & UPDATE. По триггеру я вставляю в TableB, поэтому мой вопрос: как я могу получить вставленный идентификатор из TableB? FROM INSERTED содержит информацию о записи в таблице A?
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 @idTableB=@@IDENTITY
--SET @idTableB=SCOPE_IDENTITY()
--MAKE SOME OTHER THINGS WITH @idTableB
END
END
Если я отправлю сотню или тысячу вставок в таблицу A в одном и том же сеансе. Могу ли я использовать @@identity или scope_identity() (я выбираю последнее), чтобы получить идентификатор вставки b? И насколько удобно и безопасно использовать одну из этих двух функций с учетом каждого срабатывания триггера и времени выполнения всех функций триггера