您的位置:首页 > 数据库

SQL SERVER有触发器的删除

2006-06-14 14:33 309 查看
如果删除一张数据表中的一批记录,在没有触发器的情况下,使用一条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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐