触发器:可以更新,删除,插入触发器,不同种类的触发器可以存在于同一个表,但同种类的不能有多个。
一个更新、一个删除是可以共存的。
~~语法~~

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

DELIMITER $$

CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
TRIGGER name_trigger BEFORE/AFTER INSERT/UPDATE/DELETE
ON TableName
FOR EACH ROW BEGIN   .....................此处编辑所要触发的sql存储过程语句..................................... END$$ DELIMITER ;

标准的触发器书写

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

~~实例~~

example1 - INSERT:

创建表tab1

DROP TABLE IF EXISTS tab1;

CREATE TABLE tab1(
    tab1_id varchar(11)
);
创建表tab2
DROP TABLE IF EXISTS tab2;

CREATE TABLE tab2(
    tab2_id varchar(11)
);

创建触发器:t_afterInsert_on_tab1

作用:增加tab1表记录后自动将记录增加到tab2表中(注意下面sql事例中的红色部分,delimiter与$$之间必须仅且仅有一个空格)

DROP TRIGGER IF EXISTS t_afterInsert_on_tab1;

DELIMITER $$

CREATE TRIGGER t_afterInsert_on_tab1
AFTER INSERT ON tab1
FOR EACH ROW
BEGIN
     INSERT INTO tab2(tab2_id) VALUES(new.tab1_id);
END$$

DELIMITER ;

测试一下
INSERT INTO tab1(tab1_id) values('0001');
看看结果
SELECT * FROM tab1,tab2;

example2 - DELETE:

创建触发器:t_afterDelete_on_tab1

作用:删除tab1表记录后自动将tab2表中对应的记录删去(注意下面sql事例中的红色部分,delimiter与$$之间必须仅且仅有一个空格)

DROP TRIGGER IF EXISTS t_afterDelete_on_tab1;

DELIMITER $$

CREATE TRIGGER t_afterDelete_on_tab1
AFTER DELETE ON tab1
FOR EACH ROW
BEGIN
      DELETE FROM tab2 WHERE tab2_id=old.tab1_id;
END$$

DELIMITER ;

测试一下
DELETE FROM tab1 WHERE tab1_id='0001';
看看结果
SELECT * FROM tab1,tab2;

example3 - UPDATE:

创建触发器:t_afterUpdate_on_tab1

作用:更新tab1表记录后自动将tab2表中对应的记录更新(注意下面sql事例中的红色部分,delimiter与$$之间必须仅且仅有一个空格)

DROP TRIGGER IF EXISTS t_afterUpdate_on_tab1;

DELIMITER $$

CREATE TRIGGER t_afterUpdate_on_tab1
AFTER UPDATE ON tab1
FOR EACH ROW
BEGIN
  IF new.tab1_id = '0002' THEN
      UPDATE tab2 SET tab2_id = new.tab1_id;
  END IF;
END;$$

DELIMITER ;

测试一下
UPDATE tab1 SET tab1_id = '0002';
看看结果
SELECT FROM tab1,tab2;
 
 
以上实例当中的sql语句请直接放查询界面执行,不可放在工具生成的触发器界面执行,sqlyog工具的自动生成触发器界面,需要更加标准的书写,所以请直接放在查询界面执行,如果要在sqlyog的自动生成触发器界面执行,请参照上面的标准触发器写法去修改sql语句。 
 

MySQL 触发器简单实例 - 转载的更多相关文章

  1. MySQL 触发器简单实例

    ~~语法~~ CREATE TRIGGER <触发器名称>  --触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象.{ BEFORE |  ...

  2. mysql触发器trigger 实例详解

    mysql触发器trigger 实例详解 (转自 https://www.cnblogs.com/phpper/p/7587031.html)   MySQL好像从5.0.2版本就开始支持触发器的功能 ...

  3. Mysql笔记——触发器简单实例

    首先贴上触发器语法吧: CREATE TRIGGER <触发器名称> –触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象. { BEFOR ...

  4. MySQL触发器Trigger实例篇

    定义: 何为MySQL触发器? 在MySQL Server里面也就是对某一个表的一定的操作,触发某种条件(Insert,Update,Delete 等),从而自动执行的一段程序.从这种意义上讲触发器是 ...

  5. mysql数据库 触发器简单实例

    触发器(trigger):监视某种情况,并触发某种操作. 触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/befo ...

  6. Java WebService 简单实例[转载]

    [注意,本文转载自  http://hyan.iteye.com/    ] 一.准备工作(以下为本实例使用工具) 1.MyEclipse10.7.1 2.JDK 1.6.0_22 二.创建服务端 1 ...

  7. mysql 存储过程简单实例

    一.什么是存储过程 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程 ...

  8. MySql存储过程简单实例

    转自:http://www.cnblogs.com/zhuawang/p/4185302.html ********************* 创建表 ************************ ...

  9. mysql触发器使用实例

    DELIMITER $$ USE `db`$$ DROP TRIGGER `member_walletinit_trigger`$$ CREATE TRIGGER `member_walletinit ...

随机推荐

  1. Leetcode-Permuation Sequence

    The set [1,2,3,…,n] contains a total of n! unique permutations. By listing and labeling all of the p ...

  2. 原生js:js获得当前选中的内容的字体大小

    利用currentStyle()和ComputedStyle() function getstyle(obj, key) {    if (obj.currentStyle) {        ret ...

  3. 160809、tomcat中配置多个域名及将tomcat配置成系统服务

    本地测试用的(注意红色部分) 第一步.自己的windows电脑,在c盘中有个hosts文件(搜索一下),做以下修改(其中127.0.0.1是本机地址,192.1638.10.139是我虚拟机中linu ...

  4. soe结果为栅格的处理方式

    背景 ArcGIS for Server通过rest的形式提供功能在很多的时候,不能满足实际的需求.在日常工作中需要对Server的功能进行扩展,esri提供的一种方式就是使用soe的形式.官方给出的 ...

  5. 深入理解CNI

    1.为什么会有CNI? CNI是Container Network Interface的缩写,简单地说,就是一个标准的,通用的接口.已知我们现在有各种各样的容器平台:docker,kubernetes ...

  6. C#__ 模拟鼠标单击事件

    首先要用到的引用有 [DllImport("User32")] public extern static void mouse_event(int dwFlags, int dx, ...

  7. mysql中解决主键自增长断号问题

    情况一:如果表中本来已经存在数据,并且有断号的现象.那先得删除主键再添加,重新设置自增长. 1.ALTER TABLE student DROP id; 2.ALTER TABLE student A ...

  8. PHP 数组教程 定义数组

    数组array是一组有序的变量,其中每个变量被叫做一个元素. 一.定义数组  可以用 array() 语言结构来新建一个数组.它接受一定数量用逗号分隔的 key => value 参数对.  a ...

  9. Ubuntu学习笔记2-网络部分

    Ubuntu server配置IP地址 第一种方法:常规方法 1.登录Ubuntu Server,然后通过“sudo -s” 切换到root用户. 2.输入“cd  /etc/network/”,回车 ...

  10. s5_day4作业

    # #流程控制练习题: # #==========>基础部分 # #练习一: # if True or False and False: # print('yes') # else: # pri ...