我将 TableA 和 TableB 放入 SQL Server 2008。
TableA 有一个在 INSERT & UPDATE 之后触发的触发器,在我插入 TableB 的触发器上,所以我的问题是如何从 TableB 中获取插入的 ID?FROM INSERTED 有 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 @idTableB=@@IDENTITY
--SET @idTableB=SCOPE_IDENTITY()
--MAKE SOME OTHER THINGS WITH @idTableB
END
END
如果我在同一个会话中向 tableA 发送了十万个插入。我可以使用 @@identity 或 scope_identity() (我选择最后一个)来获取 b 插入的身份吗?考虑到每次触发触发器以及完成所有触发器功能的时间,使用这两个功能之一是多么方便和安全