日期:2014-05-18  浏览次数:20622 次

请教触发器和级联操作的区别
请教触发器和级联操作的区别。。。。谢谢!

------解决方案--------------------
触发器和级联引用操作 
级联引用操作按下列顺序激发 AFTER 触发器:
1、首先执行由原始 DELETE 或 UPDATE 直接导致的所有级联引用操作。 
2、当完成原始级联引用操作后,无论是否更新了任何行,都将激发原始表上的 AFTER 触发器。 
3、然后激发级联引用操作链中表上的 AFTER 触发器,但只有已更新或删除了表中的一行或多行时才激发。
如果任何原始级联引用操作集生成任何错误,则产生错误,不激发 AFTER 触发器,并且回滚 DELETE 或 UPDATE。 


Deleted 表用于存储 DELETE 和 UPDATE 语句所影响的行的复本。在执行 DELETE 或 UPDATE 语句时,行从触发器表中删除,并传输到 deleted 表中。Deleted 表和触发器表通常没有相同的行。 

Inserted 表用于存储 INSERT 和 UPDATE 语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到 inserted 表和触发器表中。Inserted 表中的行是触发器表中新行的副本

详细资料查看联机丛书
------解决方案--------------------
级联操作会把 主外键相关联的表(数据)做同步操作(多数情况为级联删除)。

触发器 也可以实现 级联操作,只不过更灵活。触发器中可以编写简单的逻辑过程 和调用 存储过程。但是数据出了问题,不好寻找问题的根源,这也是很多人不愿意使用触发器的原因。

触发器分为表级(删除、更新、插入)、数据库级(DDL)和 服务器级 三种。
------解决方案--------------------
效率上级联更高,操作上触发器更灵活,相同的需求上功能基本类似。
------解决方案--------------------
探讨
请教触发器和级联操作的区别。。。。谢谢!