请教 关于级联操作和触发器以及临时表Deleted、Inserted
例如,假设有一个数据库包含三个表:TableA、TableB 和 TableC。针对 TableA 中的主键,用 ON DELETE CASCADE 定义 TableB 中的外键。针对 TableB 中的主键,用 ON DELETE CASCADE 定义 TableC 中的外键。如果 DELETE 语句删除 TableA 中的行,则该操作也将删除 TableB 中具有与 TableA 中所删除的主键匹配的任何外键中的所有行,然后删除 TableC 中具有与 TableB 中所删除的主键匹配的任何外键中的所有行。
触发器和级联引用操作
级联引用操作按下列顺序激发 AFTER 触发器:
1、首先执行由原始 DELETE 或 UPDATE 直接导致的所有级联引用操作。
2、当完成原始级联引用操作后,无论是否更新了任何行,都将激发原始表上的 AFTER 触发器。
3、然后激发级联引用操作链中表上的 AFTER 触发器,但只有已更新或删除了表中的一行或多行时才激发。
如果任何原始级联引用操作集生成任何错误,则产生错误,不激发 AFTER 触发器,并且回滚 DELETE 或 UPDATE。
这个是SQLSERVER的联机丛书上写的。
我有疑惑,按上面的说明,是先把3个表中的数据先删除然后在执行每个表中的触发器。但触发器中如果使用到了临时表Deleted,要从Deleted中取数据,那这个表中的数据到底是些什么?因为3个表中的数据都已经删掉了。
小弟初涉这个,对Deleted和Inserted临时表还不熟悉,希望高人指点迷津。