mysql 触发器

来源:互联网 发布:电脑听新闻的软件 编辑:程序博客网 时间:2024/06/07 07:01

一、创建触发器

功能:在table2上建立触发器,数据同步到table1上(假设两个表均具有三个字段id,column1,column2)

1、增
CREATE TRIGGER table2_insert AFTER INSERT ON table2 FOR EACH ROW
BEGIN

INSERT INTO table1 (

id,

column1,

column2

)

VALUES (

new.id,

new.column1,

new.column2

);

END;


2、删
CREATE TRIGGER table2_delete AFTER DELETE ON table2 FOR EACH ROW
BEGIN
DELETE FROM table1
WHERE table1.id = old.id;
END;

3、改
CREATE TRIGGER table2_update AFTER UPDATE ON table2 FOR EACH ROW
BEGIN
UPDATE table1
SET 
table1.column1 = new.column1,
table1.column2 = new.column2
WHERE
table1.id = new.id;
END;


二、删除触发器

DROP TRIGGER table2_insert;
DROP TRIGGER table2_update;
DROP TRIGGER table2_delete;


三、说明

1、创建和删除触发器操作必须在table2所在的schema上执行
2、DML触发器的触发事件有INSERT、UPDATE和DELETE三种
3、触发的时间有BEFORE和AFTER两种,分别表示触发动作发生在DML语句执行之前和语句执行之后
4、触发级别,有语句级触发器和行级触发器两种。语句级触发器表示SQL语句只触发一次触发器,行级触发器表示SQL语句影响的每一行都要触发一次
5、查看触发器命令:SHOW TRIGGERS;
6、load data和replace语句也能引起触发器执行
7、before或after,均是第一条若执行失败,第二条也会执行失败;若第二条失败,则第一条会回滚
8、集群中,应该在主库上执行触发器操作
9、触发器是一种特殊的存储过程
10、触发器存在性能问题
11、复杂逻辑嵌套有可能引起死锁
12、触发器隐士调用容易被忽略,致使排错困难
13、可移植性差,不支持跨数据库软件移植
14、占用服务器资源
15、不能做DDL操作
16、若执行失败,事务性表回滚,非事务性表不能回滚
17、事件触发





0 0
原创粉丝点击