Sql server SQL Server 2005删除触发器从已删除的触发器中选择返回null

Sql server SQL Server 2005删除触发器从已删除的触发器中选择返回null,sql-server,sql-server-2005,triggers,Sql Server,Sql Server 2005,Triggers,我在SQL Server中有一个名为hl7_lock的表,其中包含以下列: hl7_id 锁定dtm 锁定用户 我在表上有3个用于更新、插入和删除的触发器 该表从未更新,但INSERT触发器工作正常。 但是,此删除触发器偶尔会在hl7_lock_日志中放入一条hl7_id为空的记录 SET NOCOUNT ON; declare @hl7_id decimal(18,0) select @hl7_id = hl7_id from deleted insert into hl7_lock_

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

hl7_id 锁定dtm 锁定用户

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

该表从未更新,但INSERT触发器工作正常。 但是,此删除触发器偶尔会在hl7_lock_日志中放入一条hl7_id为空的记录

    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 SP 2,但这并没有改善情况。有人在SQL Server触发器中看到过这种行为吗。关于如何修复触发器有什么建议吗?

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

你应该做更多类似的事情:

插入hl7_锁定日志(用户名、操作、hl7_id、dtm) 选择系统用户“删除”,hl7\U id,getdate()
从已删除

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

你应该做更多类似的事情:

插入hl7_锁定日志(用户名、操作、hl7_id、dtm) 选择系统用户“删除”,hl7\U id,getdate()
从已删除

您确定记录在“已删除”表中吗?如果在主表上运行删除零条记录的delete语句,则上面的代码似乎仍将插入到锁定日志中

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


正如口渴者所指出的,您需要调整在一条语句中删除多条记录。

您确定记录在“已删除”表中吗?如果在主表上运行删除零条记录的delete语句,则上面的代码似乎仍将插入到锁定日志中

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

正如口渴者所指出的,您需要调整在一条语句中删除多条记录