如果删除一张数据表中的一批记录,在没有触发器的情况下,使用一条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

相关文章:

  • 2022-12-23
  • 2022-01-10
  • 2022-12-23
  • 2022-12-23
  • 2022-02-20
  • 2021-06-22
  • 2021-05-18
  • 2021-11-07
猜你喜欢
  • 2021-08-26
  • 2021-07-12
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-15
相关资源
相似解决方案