MySQL 触发器简单实例

来源:互联网 发布:集线器端口电源限制 编辑:程序博客网 时间:2024/06/17 23:46

触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。
语法
1、CREATE TRIGGER <触发器名称> –触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象.
2、{ BEFORE | AFTER } –触发器有执行的时间设置:可以设置为事件发生前或后。
3、{ INSERT | UPDATE | DELETE } –同样也能设定触发的事件:它们可以在执行insert、update或delete的过程中触发。
4、ON <表名称> –触发器是属于某一个表的:当在这个表上执行插入、 更新或删除操作的时候就导致触发器的激活. 我们不能给同一张表的同一个事件安排两个触发器。但可以有一个BEFORE UPDATE触发程序和一个BEFORE DELETE触发程序,或者一个BEFORE UPDATE触发程序和一个AFTER UPDATE触发程序
5、FOR EACH ROW –触发器的执行间隔:FOR EACH ROW子句通知触发器 每隔一行执行一次动作,而不是对整个表执行一次。
6、<触发器SQL语句> –触发器包含所要触发的SQL语句:这里的语句可以是任何合法的语句, 包括复合语句,但是这里的语句受的限制和函数的一样。

–你必须拥有相当大的权限才能创建触发器(CREATE TRIGGER),如果你已经是Root用户,那么就足够了。这跟SQL的标准有所不同。

实例

#创建user表DROP TABLE IF EXISTS user;CREATE TABLE user(    id int(11) NOTNULL auto_increment COMMENT("用户id"),    name varchar(10) NOT NULL COMMENT("用户名"));#创建评论表DROP TABLE IF EXISTS comment;CREATE TABLE comment(    c_id int(11) NOT NULL auto_increment COMMENT("评论id"),    u_id int(11) NOT NULL COMMENT("用户id"),    u_name varchar(10) NOT NULL COMMENT("用户名")    content varchar(100) NOT NULL DAFEULT '' COMMENT("评论的内容"));

创建触发器:t_afterupdate_on_comment

作用:改变user表记录后自动跟新comment表中用户信息

DROP TRIGGER IF EXISTS t_afterupdate_on_comment;CREATE TRIGGER t_afterupdate_on_commentAFTER UPDATE ON userFOR EACH ROWBEGIN     UPDATE commentSET u_name=new.nameWHEREu_id=old.id;END;

1、首先在dos窗口查看自己mysql的版本信息,>mysql –version
mysql数据库是从5.0.2版本才开始支持触发器的。
2、首先找到需要操作的表,右键设计表
这里写图片描述

3、找到触发器选项
这里写图片描述

4、创建触发器
这里写图片描述

5、预览效果
这里写图片描述

原创粉丝点击