【发布时间】:2015-08-10 12:35:33
【问题描述】:
我已经创建了我的第一个触发器。请参阅下面的触发器代码部分。
触发器和结果都符合预期,除了一件事。
因此,当我运行下面的代码时,它不会将值插入到我的表中,因此记录数保持不变。
insert into MatlabSearchPath(directory, userName)
values('madeup', 'default')
在消息窗口中,虽然我得到了两行。我不明白为什么我看到两行,尤其是 1 行受到影响 - 我的表中的记录数没有改变?
(0 row(s) affected)
(1 row(s) affected)
触发器
create trigger trDefaultPathInsert on DVLP_QES.dbo.MatlabSearchPath
instead of insert
as
begin
declare @defCount int
declare @retVal int
select @defCount = count(userName) from inserted where userName = 'Default'
if (@defCount > 0)
begin
select @retVal = count(HostName) from DVLP_QES.dbo.UserHostName where HostName = HOST_NAME()
if (@retVal > 0)
begin
insert into MatlabSearchPath select * from inserted
end
else
begin
insert into MatlabSearchPath select * from inserted where inserted.userName <> 'Default'
end
end
结束
更新
我应该提到这张表上有 3 个触发器,一个是上面的触发器,另一个是删除,最后一个是更新
【问题讨论】:
-
你确定这两条消息来自同一个插入吗?如果您清除消息窗口并运行插入,您是否总是会收到两条消息?
-
@MarkLeiber 是的,我已经清除了消息窗口并且总是收到两条消息
标签: sql sql-server triggers