4
我有一個問題,而不是插入觸發器使用表。使用OUTPUT/INTO而不是插入觸發器無效'插入'表
我創建的表包含標識列。我需要在此表上使用插入觸發器。我還需要從我的觸發器中看到新插入的身份的值,這需要在觸發器中使用OUTPUT/INTO。問題是執行INSERT的客戶端無法看到插入的值。
例如,創建一個簡單的表:
CREATE TABLE [MyTable](
[MyID] [int] IDENTITY(1,1) NOT NULL,
[MyBit] [bit] NOT NULL,
CONSTRAINT [PK_MyTable_MyID] PRIMARY KEY NONCLUSTERED
(
[MyID] ASC
))
接着我創建一個簡單的,而不是觸發的:
create trigger [trMyTableInsert] on [MyTable] instead of insert
as
BEGIN
DECLARE @InsertedRows table(MyID int,
MyBit bit);
INSERT INTO [MyTable]
([MyBit])
OUTPUT inserted.MyID,
inserted.MyBit
INTO @InsertedRows
SELECT inserted.MyBit
FROM inserted;
-- LOGIC NOT SHOWN HERE THAT USES @InsertedRows
END;
最後,我試圖執行插入和檢索插入的值:
DECLARE @tbl TABLE (myID INT)
insert into MyTable
(MyBit)
OUTPUT inserted.MyID
INTO @tbl
VALUES (1)
SELECT * from @tbl
這個問題是我得到的所有回報爲零。我可以看到該行已正確插入表中。我也知道,如果我從觸發器中刪除OUTPUT/INTO,這個問題就會消失。
有什麼想法,我做錯了什麼?或者我是如何做事情不可行的?
謝謝。