SQL:触发器DELETE触发器的工作过程

  • Post author:
  • Post category:其他


当触发DELETE触发器后,从受影响的表中删除的行将被放置到一个特殊的deleted表中。deleted表是一个逻辑表,它保留已被删除数据行的一个副本。deleted表还允许引用由初始化DELETE语句产生的日志数据。

使用DELETE触发器时,需要考虑以下的事项和原则:

l 当某行被添加到deleted表中时,它就不再存在于数据库表中;因此,deleted表和数据库表没有相同的行。

l 创建deleted表时,空间是从内存中分配的。deleted表总是被存储在高速缓存中。

l 为DELETE动作定义的触发器并不执行TRUNCATE TABLE语句,原因在于日志不记录TRUNCATE TABLE语句。

示例

在本例中,将创建一个触发器,无论何时删除一个产品类别(即从Categories表中删除一条记录),该触发器都会更新Products表中的Discontinued列。所有受影响的产品都标记为1,标示不再使用这些产品了。

USE Northwind

CREATE TRIGGER Category_Delete

       ON Categories

       FOR DELETE

AS

       UPDATE P SET Discontinued = 1

              FROM Products AS P INNER JOIN deleted AS d

              ON P.CategoryID = d.CategoryID



版权声明:本文为weixin_44523387原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。