MySQL TRIGGER

来源:互联网 发布:怎么获取股票数据 编辑:程序博客网 时间:2024/05/16 02:36

以下内容来源于 MySQL 触发器简单实例文章。

触发器(TRIGGER)是MySQL的数据库对象之一,从5.0.2版本开始支持。该对象与编程语言中的函数非常类似,都需要声明、执行等。但是触发器的执行不是由程序调用,也不是由手工启动,而是由事件来触发、激活从而实现执行。有点类似DOM中的事件。

语法

CREATE TRIGGER <触发器名称>  --触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象.{ BEFORE | AFTER }  --触发器有执行的时间设置:可以设置为事件发生前或后。{ INSERT | UPDATE | DELETE }  --同样也能设定触发的事件:它们可以在执行insertupdatedelete的过程中触发。ON <表名称>  --触发器是属于某一个表的:当在这个表上执行插入、 更新或删除操作的时候就导致触发器的激活. 我们不能给同一张表的同一个事件安排两个触发器。FOR EACH ROW  --触发器的执行间隔:FOR EACH ROW子句通知触发器 每隔一行执行一次动作,而不是对整个表执行一次。<触发器SQL语句>  --触发器包含所要触发的SQL语句:这里的语句可以是任何合法的语句, 包括复合语句,但是这里的语句受的限制和函数的一样。--你必须拥有相当大的权限才能创建触发器(CREATE TRIGGER),如果你已经是Root用户,那么就足够了。这跟SQL的标准有所不同。

例子
- 创建两个表

DROP TABLE IF EXISTS tab1;CREATE TABLE tab1(    tab1_id varchar(11));DROP TABLE IF EXISTS tab2;CREATE TABLE tab2(    tab2_id varchar(11));
  • 创建 插入触发器:
DROP trigger if exists t_insert;delimiter $create TRIGGER t_insertAFTER INSERT on tab1for EACH ROWBEGIN    insert into tab2(id) values(new.id);END;delimiter ;insert into tab1(id) VALUES('1');
  • 创建删除触发器:
DROP trigger if exists t_insert;delimiter $create TRIGGER t_insertAFTER DELETE on tab1for EACH ROWBEGIN    DELETE from tab2 WHERE id=old.id;END;delimiter ;DELETE from tab1 WHERE id=1;

触发器里面可以有多个执行语句

【参考】

mysql之触发器trigger

MySQL 触发器简单实例

如果不清楚 delimiter是怎么用的,欢迎查看MySQL DELIMITER

原创粉丝点击