mssql sqlserver 触发器综合简介(sql入门者必备)


摘要:
  触发器:是sqlserver提供给DBA的一种特殊的存储过程;
触发器的运行,不由程序调用,而由某一种操作触发;
触发器分为: 表(DML)触发器和数据库(DDL)触发器;
触发器:常常应用于数据完全整操作和数据库管理操作;
——————————————————
存储过程同触发器的区别:
1:两者的运行方式不同,触发器由触发运行,存储过程需调用运行;
2:触发器中可以调用存储过程;



1.触发器优点

触发器自动触发,当我们修改表数据或表结构或其它符合触发器启动条件时,
触发器会被立即执行,
通过触发器的功能,我们可以限制其它表的操作和规范其它表的数据。
触发器可检测数据完整性和实现各种约束。



2.触发器功能

常使用触发器实现以下功能:
1.强制数据完整性
2.通过触发器强制限制违反管理员意愿的操作,例:禁止删除表数据 禁止修改表结构 禁止修改表数据 禁止所有数据库定义操作
3.触发器中通过单表操作级联影响多表操作,例:表A插入数据的同时向B、C、D、…等表插入数据
4.通过编写触发器的方式,当数据出现约束异常时,我们可以通过触发器返回给用户响应的错误提示信息



3.触发器分类

1.DML(数据操作语言,Data Manipulation Language)触发器
 DML表触发器通常应用于表和视图上,例:
for insert:当我们向表中插入数据时被触发;
for delete:当我们删除表数据时触发;
for update:当我们修改表数据时触发;
实现dml触发器我们可以实现数据级联自动更新、数据约束…等
——————————————
2.DDL(数据定义语言,Data Definition Language)触发器
数据库触发器:
使用此类触发器我们可以监控和限制所有数据库定义操作
例:
禁止某一用户创建表
禁止用户删除表 等。



4.触发器工作原理

DML触发器触发时:
系统首先将原数据行放入deleted表中(可以为多行数据),
然后将新数据行放入inserted表中(可以为多行数据)
以上两个表都为只读,当触发器运行完毕后,虚拟表自动释放。

for insert:只生成inserted表
for delete:只生成deleted表,如果执行中产生错误,则将deleted数据还原至数据表中
for update:将修改前的数据放入deleted表中,将修改后的数据放入inserted表中,
如果修改失败就使用deleted数据还原原数据

相关阅读:
数据库DDL触发器应用举例
mssql sqlserver 获取数据库下触发器的数量
mssql sqlserver 通过eventData函数获取”数据库触发器”的相关信息
mssql sqlserver 编写触发器,禁止用户删除表-指定表
mssql sqlserver触发器中,如何获取修改前的值(获取修改前的值的方法)
MSSQL嵌套触发器-编写方法分享
MSSQL 触发器管理命令收集
MSSQL after触发器简介
mssql instead of 触发器应用一-创建只读视图(view)的方法
mssql instead of 触发器简介
MSSQL DML触发器简介
MSSQL 触发器简介