我执行以下触发器:
ALTER TRIGGER [dbo].[TestTrigger] ON [dbo].[TestTable]
after update as
Declare @Name As varchar(30)
update TestTable set [Name] = 'Rob Stanfield'
select @Name = [Name] from inserted
print @Name
GO
我正在执行的插入语句是:
INSERT INTO TestTable (name) VALUES ('Ed Watkins')
输出如下:
(1 row(s) affected)
Ed Watkins
(1 row(s) affected)
我希望输出为:
(1 row(s) affected)
Rob Stanfield
(1 row(s) affected)
我错过了什么?
答案 0 :(得分:3)
Inserted
将是触发器运行之前在TestTable
中更改的行的副本,因此其中的name值仍为Ed Watkins。
我不确定您为什么要这样做,但是您必须查询刚刚更新的表格,以便在触发器中获取刚更新的新值:
ALTER TRIGGER [dbo].[TestTrigger] ON [dbo].[TestTable]
after update as
Declare @Name As varchar(30)
update TestTable set [Name] = 'Rob Stanfield'
select @Name = [Name] from TestTable
print @Name
GO
你真的在寻找instead of insert
触发器吗?