【数据库】——触发器

触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如 当对一个表进行操作( insert,delete, update)时就会激活它执行。

触发器和存储过程的区别: 

(1)触发器主要时通过事件进行触发而被执行的。
(2) 存储过程可以通过存储过程名字而被直接调用。

触发器的种类:

6种触发器为:before+insert,before+update,before+delete,after+insert,after+update,after+delete。

insert,load data,replace语句能触发Insert触发器。

update语句能触发update触发器。

delete和replace语句能触发delete触发器。

触发器的优点:

(1)触发器自动执行,它们在表的数据作了任何修改之后立即激活 
(2)触发器可以通过数据库中的相关表进行层叠更改。这比直接把代码卸载前台的做法更安全合理 
(3)触发器可以强制限制,这些限制比用CHECK约束所定义的更复杂。与CHECK的约束不同的是,触发器可以引用其他表中的列。

触发器的功能:维护数据的安全性

触发器的使用:

1、创建触发器

create triggle tri_name
    tri_time
    tri_event
    on tb_name
    for each row
    tri_stmt;

tri_time包括before,after,以指明触发程序是在激活它的语句之前或之后触发

tri_event包括insert,update,delete,指明了激活触发程序的语句的类型

触发程序与命名为tb_name的表相关,tb_name必须引用永久性表。不能将触发程序与临时表表或视图关联起来。

注意:一个表中最多建立6种触发器,一个表中只能建立一种类型的触发器。

2、查看触发器

show triggers

在triggers表中查看触发器信息

information_schema数据库的triggers 表中,可以通过查询查看触发器信息

select * from `information_schema`.`triggers` where `trigger_name`='ins_sum'

3、删除触发器

使用DROP TRIGGER 语句可以删除MYSQL中已经定义的触发器,删除触发器的基本语法

DROP TRIGGER [schema_name.]trigger_name

其中(schema_name)是可选的

如果省略了schema(方案),将从当前方案中舍弃触发程序。

删除ins_sum触发器

DROP TRIGGER `school`.`ins_sum`

触发器ins_sum删除成功

你可能感兴趣的:(数据库)