MySQL 触发器

Mysql  /  houtizong 发布于 2年前   124
    触发器的作用是在增、删、改操作之前(或之后)自动调用的SQL语句或存储过程。比如为了保持数据的一致性,删除订单记录时,触发删除订单详细记录。

1. 创建触发器:
DELIMITER $$ -- 结束符改为$$  CREATE TRIGGER trigger_name BEFORE|AFTER INSERT|UPDATE|DELETE ON table_name[FOR EACH ROW]BEGIN  commands;END$$DELIMITER ; -- 结束符改回;

注:一个触发器只能定义一个操作,如BEFORE INSERT, AFTER UPDATE等。

如Account表:
CREATE TABLE ACCOUNT (USERNAME VARCHAR(50) NOT NULL,BALANCE INT NOT NULL,PRIMARY KEY (USERNAME),CHECK (BALANCE >= 0) -- analyzed but ignored by MySQL);


例1:往表account插入记录,balance小于0时改为0
DELIMITER $$CREATE TRIGGER account_beforeInsert BEFORE INSERT ON account  FOR EACH ROWBEGIN    IF NEW.balance < 0 THEN -- NEW代表新的记录        SET NEW.balance = 0;    END IF;END$$


例2:往表account插入记录,balance小于0时,触发异常
DELIMITER $$CREATE TRIGGER account_beforeInsert BEFORE INSERT ON account  FOR EACH ROWBEGIN    IF NEW.balance < 0 THEN        CALL xxx_yyy();        UPDATE _xxx_yyy SET X = 1; -- 通过调用不存在的存储过程或执行时报错的SQL来引发异常,名称尽量复杂,防止和已有或新建的表或存储过程重名。    END IF;END$$


2. 查询触发器:
SHOW TRIGGERS;


3. 删除触发器:
DROP TRIGGER [database_name.]trigger_name

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客