首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server 2005删除触发器select from deleted返回null

问SQL Server 2005删除触发器select from deleted返回null
EN

Stack Overflow用户
提问于 2009-05-11 19:44:17
回答 2查看 3.9K关注 0票数 1

我在SQL Server中有一个名为hl7_lock的表,其中包含以下各列:

hl7_id lock_dtm lock_user

我在表上有3个触发器,分别用于更新、插入和删除

该表从不更新,但INSERT触发器工作正常。但是,此delete触发器偶尔会将hl7_id为空的记录放入hl7_lock_log中

代码语言:javascript
复制
    SET NOCOUNT ON;
declare @hl7_id decimal(18,0)
select @hl7_id = hl7_id from deleted
insert into hl7_lock_log (user_name, action, hl7_id, dtm)                        
        values(system_user, 'Delete', @hl7_id,getdate())

其他字段已成功插入,但hl7_id为空。删除的记录没有空的hl7_id。

我们在周末安装了SQL Server SP2,但这并没有改善情况。有没有人在SQL Server触发器中看到过这种行为。对如何修复扳机有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-05-11 19:54:18

当只删除一条记录,还是删除多条记录时,会发生这种情况?如果删除了多条记录,则触发器将失败。

你应该做更多这样的事情:

insert into hl7_lock_log (user_name,action,hl7_id,dtm) select system_user,'Delete',hl7_id,getdate() from deleted

票数 6
EN

Stack Overflow用户

发布于 2009-05-11 19:56:01

您确定记录在“已删除”表中吗?如果在删除零记录的主表上运行delete语句,上面的代码看起来仍然会插入到锁日志中。

也许在插入之前检查是否有已删除的记录可以解决这个问题。

正如Thirster还指出的那样,您需要针对在一条语句中删除的多条记录进行调整。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/849722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档