mssql sqlserver 中触发器同存储过程之间的区别


摘要:
下文将着重讲述在sqlserver中触发器同存储过程之间的区别,如下所示:




一、触发器简介:

触发器由一组sql脚本组成;
触发器的输入来源系统内部;
触发器的输入参数是固定的;
触发器的调用方式来自系统内部的事件触发–例:表修改记录 新增记录 删除记录 表删除 用户的其它动作等。
触发器无返回值的概念,也无法输出相关集合 。

二、触发器功能说明:

触发器用于处理sql自带的约束无法满足时,通过脚本而建立的一些新的sql约束,达到系统对数据的各种要求。
触发器的用途有很多:常见的复杂的级联更新操作,强制约束,复杂约束(涉及多表多列之间的复杂约束),数据完整性,数据规范性(防止数据非法操作)
触发器的主要作用是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。它能够对数据库中的相关表进行级联修改,强制比CHECK约束更复杂的数据完整性,并自定义操作消息,维护非规范化数据以及比较数据修改前后的状态。与CHECK约束不同,触发器可以引用其它表中的列。在下列情况下使用触发器实现复杂的引用完整性;强制数据间的完整性。
创建多行触发器,当插入,更新、删除多行数据时,必须编写一个处理多行数据的触发器。执行级联更新或级联删除这样的动作。级联修改数据库中所有相关表。撤销或者回滚违反引用完整性的操作,防止非法修改数据

三、触发器同存储过程之间的区别:

触发器同存储过程的不同区别如下所示:
1.调用方式不同 :触发器由sql事件触发
存储过程 由应用程序 用户 触发器调用
2.返回值不同:触发器无返回值的概念
存储过程可以输出参数 输出结果集
3.参数不同:触发器由系统事件指定参数
存储过程由开发者自行执行参数个数 参数类型