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
举例:
文档数据表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
相关文章推荐
- SQL Server创建、删除、修改、查看触发器示例
- SQL SERVER的多行删除触发器use cursor
- 批量删除Sql Server对象(表,存储过程,触发器)
- sql server 2000/2005 判断存储过程、触发器、视图是否存在并删除
- SQL SERVER 判断是否存在并删除某个数据库、表、视图、触发器、储存过程、函数
- sql server 2000/2005/2008 判断存储过程、触发器、视图是否存在并删除
- sql server 2000/2005/2008 判断存储过程、触发器、视图是否存在并删除
- SQL Server 触发器的修改与删除
- SQL Server 触发器例题: --次性删除course表数据,使用触发器替换删除操作,先删除外键表相关数据,再删除course。很难理解
- SQL Server使用触发器删除重复的列(Delete duplicate rows using cursor in SQL Server)
- sql server 2000/2005 判断存储过程、触发器、视图是否存在并删除
- sql server 2000/2005 判断存储过程、触发器、视图是否存在并删除
- sql server 2000/2005 判断存储过程、触发器、视图是否存在并删除
- sql server 2000/2005 判断存储过程、触发器、视图是否存在并删除
- 批量删除Sql Server对象(表,存储过程,触发器)
- SQL server 触发器,在触发Merge过程中,逐行触发的解决办法 用group by 避免是一次触发中的多行更新或删除。
- sql server 2000/2005 判断存储过程、触发器、视图是否存在并删除
- sql server 2000/2005 判断存储过程、触发器、视图是否存在并删除
- SQL Server 触发器创建、删除、修改
- SQL Server 触发器的删除操作