我在SQL Server中有一个名为hl7_lock的表,其中包含以下各列:
hl7_id lock_dtm lock_user
我在表上有3个触发器,分别用于更新、插入和删除
该表从不更新,但INSERT触发器工作正常。但是,此delete触发器偶尔会将hl7_id为空的记录放入hl7_lock_log中
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触发器中看到过这种行为。对如何修复扳机有什么建议吗?
发布于 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
发布于 2009-05-11 19:56:01
您确定记录在“已删除”表中吗?如果在删除零记录的主表上运行delete语句,上面的代码看起来仍然会插入到锁日志中。
也许在插入之前检查是否有已删除的记录可以解决这个问题。
正如Thirster还指出的那样,您需要针对在一条语句中删除的多条记录进行调整。
https://stackoverflow.com/questions/849722
复制相似问题