• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > MySQL中触发器入门简单实例与介绍

MySQL中触发器入门简单实例与介绍

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了mysql触发器实例,mysql触发器,mysql触发器语法,mysql触发器insert,mysql触发器的作用等相关知识,希望本文的分享对您有所帮助

创建触发器。创建触发器语法如下:

CREATE TRIGGER trigger_name trigger_time trigger_event

ON tbl_name FOR EACH ROW trigger_stmt

其中trigger_name标识触发器名称,用户自行指定;

trigger_time标识触发时机,用before和after替换;

trigger_event标识触发事件,用insert,update和delete替换;

tbl_name标识建立触发器的表名,即在哪张表上建立触发器;

trigger_stmt是触发器程序体;触发器程序可以使用begin和end作为开始和结束,中间包含多条语句;


~~说明~~

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

~~实例~~

example1:

创建表tab1

 CREATE TABLE tab2(

    tab2_id varchar(11)

 );
</div>
创建触发器: t_afterinsert_on_tab1   

作用:增加tab1表记录后自动将记录增加到tab2表中

 CREATE TRIGGER t_afterinsert_on_tab1

 AFTER INSERT ON tab1

 FOR EACH ROW

BEGIN

    insert into tab2(tab2_id) values(new.tab1_id);

 END;
</div>
测试一下

 SELECT * FROM tab1;

 SELECT * FROM tab2;

example2:

创建触发器: t_afterdelete_on_tab1   

作用:删除tab1表记录后自动将tab2表中对应的记录删去

 CREATE TRIGGER t_afterdelete_on_tab1

 AFTER DELETE ON tab1

 FOR EACH ROW

 BEGIN

      delete from tab2 where tab2_id=old.tab1_id;

END;
</div>
测试一下

SELECT * FROM tab1;

SELECT * FROM tab2;


Mysql触发器的执行顺序

先抛出触发器相关的几个问题

3.1   如果before类型的触发器程序执行失败,sql会执行成功吗?

实验如下:

1)在FC_Word.planinfo中建立before触发器:

+----------+
| showprob |
+----------+
|        2 |
+----------+

3)执行sql:

update planinfo set showprob=200 where planid=1;      触发触发器程序;

4)由于不存在FC_Output.abc,before触发器执行失败,提示:

ERROR 1146 (42S02): Table 'FC_Output.abc' doesn't exist

5)再次查看:

mysql> select showprob from planinfo where planid=1;
+----------+
| showprob |
+----------+
|        2 |
+----------+

即修改sql未执行成功。即如果before触发器执行失败,sql也会执行失败。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 一次非法关机导致mysql数据表损坏的实例解决
  • 如何测试mysql触发器和存储过程
  • mysql 触发器实现两个表的数据同步
  • MySQL与SQL的触发器的不同写法
  • 配置MySQL与卸载MySQL实例操作
  • MySQL 在触发器里中断记录的插入或更新?
  • MySQL 5.0触发器参考教程第1/4页
  • 设置MySQL中的数据类型来优化运行速度的实例
  • MySQL触发器使用详解
  • MYSQL设置触发器权限问题的解决方法

相关文章

  • 2017-05-11详解MySQL中的NULL值
  • 2018-12-05mysql 5.7.15 安装配置方法图文教程_MySQL
  • 2017-05-11MySQL文本文件导入及批处理模式应用说明
  • 2017-05-11如何在SQL Server中实现 Limit m,n 的功能
  • 2018-12-05sqlserver 存储过程动态参数调用实现代码
  • 2018-12-05mysql中table_cache配置参数说明
  • 2018-12-05常用mysql优化sql语句查询方法汇总
  • 2018-12-05MySQL定义异常和异常处理详解
  • 2018-12-05Oracle case when用法
  • 2017-05-11Mysql 数据库双机热备的配置方法

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • Mysql分区和Oracle10个分区的区别详解
    • 关于mysql_field_name()函数的用法的推荐
    • mysql中group by与having合用注意事项分享
    • php后台经常提示无法连接mysql 刷新后又可以访问的解决方法
    • 详细介绍MySQL数据库事务隔离级别
    • mysql 查看版本的方法图文演示
    • mysql root密码的重设方法(亲测可用)
    • MySQL查看目前运行状况的两种方法
    • rockmongo配置文件config.php
    • 找到活动的SQL连接,并杀掉它!

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有