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,这个问题就会消失。
有什么想法,我做错了什么?或者我是如何做事情不可行的?
谢谢。