触发器是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,当对一个表进行操作( insert,delete, update)时就会激活它执行,触发器经常用于加强数据的完整性约束和业务规则等。其实往简单了说,就是触发器就是一个开关,负责灯的亮与灭,你动了,它就亮了,就这个意思。
触发器的优点:1.触发器自动执行。
2.可以通过数据库中的相关表进行层叠更改。比直接把代码写在前台的做法更安全合理。
3.可以强制限制,比CHECK约束所定义的更复杂。更具有数据完整性。
触发器的作用:1.可在写入数据表前,强制检验或转换数据。
2.触发器发生错误时,异动的结果会被撤销。
3.部分数据库管理系统可以针对数据定义语言(DDL)使用触发器,称为DDL触发器。
4.可依照特定的情况,替换异动的指令 (INSTEAD OF)。
触发器的种类:
DML触发器
通常说的DML触发器包括三种,INSERT触发器、UPDATE触发器,DELETE触发器。可以查询其他表,还可以包含复杂的Transact-sql语句。DML触发器的主要作用在于强制执行业 务规则,以及扩展Sql Server约束,默认值等。因为我们知道约束只能约束同一个表中的数据,而触发器中则可以执行任意Sql命令。
DDL触发器
主要用于审核与规范对数据库中表,触发器,视图等结构上的操作。比如在修改表,修改列,新增表,新增列等。它在数据库结构发生变化时执行,我们主要用它来记录数据库的修改过程,以及限制程序员对数据库的修改,比如不允许删除某些指定表等。
语法结构:
CREATE TRIGGER trigger_name
ON{ table | view}
{
{ {FOR | AFTER | INSTEAD OF }
{ [DELETE] [ , ] [INSERT] [,] [UPDATE]}
AS
sql_statement
}
}
根据上边的语法套用就可以了
insert 触发器
create trigger tri_insert
on student
for insert
as
sql语句
update
查询教师信息表中被删除的教师姓名性别
create trigger T_DELETETEA
on 教师信息
for delete
as
SELECT 姓名 AS 被删除的教师姓名,性别 FROM DELETED