SQL Server 2008 に TableA と TableB があります。
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 に 100 または 1000 の挿入を送信するとします。@@identity または scope_identity() (私は最後に行きます) を使用して b 挿入の ID を取得できますか? そして、トリガーが発射されるたびにトリガーのすべての機能を完了する時間を考慮して、この2つの機能のいずれかを使用することがどれほど便利で安全か