SQL SERVER有触发器的删除
如果删除一张数据表中的一批记录,在没有触发器的情况下,使用一条DELETE语句就可以删除全部符合条件的记录。但是我发现:如果一张数据表建有删除触发器,此情况下删除这张表中的一批符合条件的记录,那么每次执行一次DELETE语句,只能删除符合条件的一条记录。
举例:
文档数据表tblDocument中,要删除状态status=4001的记录。数据库中,tblDocument的主键docID,还是其他多张表的外键。
过程:
在表tblDocument上,建立DELETE的触发器,在删除tblDocument中符合条件的记录之前,先删除关联表中的数据。
问题发现:
通过语句:DELETE FROM tblDocument WHERE status=4001,每次只能删除tblDocument表中一条status=4001的纪录。
解决方案:
通过while语句来实现全部删除:
WHILE (SELECT count(*) FROM tblDocument WHERE status='4001') >0
BEGIN
DELETE FROM tblDocument WHERE status='4001'
IF (SELECT count(*) FROM tblDocument WHERE status='4001') >0
CONTINUE
END
posted on 2006-06-14 14:33 littlebamboo 阅读(1492) 评论(2) 编辑 收藏 举报