码迷,mamicode.com
首页 > 数据库 > 详细

mysql 触发器

时间:2017-09-26 01:07:49      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:alt   ase   upd   bar   art   false   blog   .com   例子   

对某个表进行【增/删/改】操作的前后如果希望触发某个特定的行为时,可以使用触发器,触发器用于定制用户对表的行进行【增/删/改】前后的行为。

1、创建基本语法

触发器能放在执行 sql 语句的6个关键位置。

格式:

技术分享

操作类型及语法:

技术分享
# 插入前
CREATE TRIGGER tri_before_insert_tb1 BEFORE INSERT ON tb1 FOR EACH ROW
BEGIN
    ...
END

# 插入后
CREATE TRIGGER tri_after_insert_tb1 AFTER INSERT ON tb1 FOR EACH ROW
BEGIN
    ...
END

# 删除前
CREATE TRIGGER tri_before_delete_tb1 BEFORE DELETE ON tb1 FOR EACH ROW
BEGIN
    ...
END

# 删除后
CREATE TRIGGER tri_after_delete_tb1 AFTER DELETE ON tb1 FOR EACH ROW
BEGIN
    ...
END

# 更新前
CREATE TRIGGER tri_before_update_tb1 BEFORE UPDATE ON tb1 FOR EACH ROW
BEGIN
    ...
END

# 更新后
CREATE TRIGGER tri_after_update_tb1 AFTER UPDATE ON tb1 FOR EACH ROW
BEGIN
    ...
END
触发器

例子:

技术分享
delimiter //
CREATE TRIGGER tri_after_insert_tb1 AFTER INSERT ON tb1 FOR EACH ROW
BEGIN
    IF NEW. num = 666 THEN
        INSERT INTO tb2 (NAME)
        VALUES
            (‘666‘),
            (‘666‘) ;
    ELSEIF NEW. num = 555 THEN
        INSERT INTO tb2 (NAME)
        VALUES
            (‘555‘),
            (‘555‘) ;
    END IF;
END//
delimiter ;
例子

说明:

表示当对 tb1 表进行数据 插入后 操作:

1、如果插入的num值为 666 ,则给对应的 tb2 表增加 两项 666 的数据。

2、如果 tb1 表插入的num数据为 555,则给 tb2 表增加两项 555 的数据。


特别的:

  • NEW表示即将插入的数据行,通过每项的名字即可获取对应项的内容。
  • OLD表示即将删除的数据行,通过每项的名字即可获取对应项的内容。


2、删除触发器

DROP TRIGGER tri_after_insert_tb1;


3、使用触发器

触发器无法由用户直接调用,而是由对表的【增/删/改】操作被动引发的。

mysql 触发器

标签:alt   ase   upd   bar   art   false   blog   .com   例子   

原文地址:http://www.cnblogs.com/jayafs/p/7594508.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!