相关疑难解决方法(0)

使用OUTPUT/INTO而不是insert trigger会使'inserted'表无效

我使用带有而不是插入触发器的表时遇到问题.

我创建的表包含一个标识列.我需要在此表上使用而不是插入触发器.我还需要在触发器中查看新插入的标识的值,这需要在触发器中使用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
))
Run Code Online (Sandbox Code Playgroud)

接下来我创建一个简单而不是触发器:

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;
Run Code Online (Sandbox Code Playgroud)

最后,我尝试执行插入并检索插入的值:

DECLARE @tbl TABLE (myID INT) 

insert into MyTable 
 (MyBit)
OUTPUT inserted.MyID
  INTO @tbl
 VALUES (1) …
Run Code Online (Sandbox Code Playgroud)

sql triggers identity

6
推荐指数
1
解决办法
3019
查看次数

标签 统计

identity ×1

sql ×1

triggers ×1