MySQL触发器trigger学习_MySQL
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL触发器trigger学习_MySQL,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2715字,纯文字阅读大概需要4分钟。
内容图文
![MySQL触发器trigger学习_MySQL](/upload/InfoBanner/zyjiaocheng/580/ec8156e091f442d0bff34e4934554fea.jpg)
create trigger test1 #触发器名称 (after/before) #触发时间 (insert/update/delete) #监视事件 on table #监视地点(表名) for each row #mysql必须加的 begin sql1 ... sqlN end; #end$$查询已有trigger:show triggers 删除已有trigger:drop trigger 触发器名称 new/old: update触发:old 代表更新前的记录。new 代表更新后的记录. insert触发:old 不能使用。new 代表插入的记录. delete触发:old 代表删除的记录。new 不能使用.
实例操作: goods商品表和ord订单表
CREATE TABLE goods( `goods_id` INT(10), `name` VARCHAR(20), `num` SMALLINT(4) )ENGINE=INNODB CHARSET=utf8 CREATE TABLE `ord`( `oid` INT(10), `gid` INT(10), `much` INT(10) )ENGINE=INNODB CHARSET=utf8 INSERT INTO goods VALUES (1, 'cat', 26),(2, 'dog', 26),(3, 'pig', 26);1、要求每下一个订单,goods表中的库存相应减少订单的数量。 mysql> select * from goods +----------+------+------+ | goods_id | name | num | +----------+------+------+ | 1 | cat | 26 | | 2 | dog | 26 | | 3 | pig | 26 | +----------+------+------+ 3 rows in set (0.00 sec) mysql> select * from ord; Empty set (0.00 sec)
#创建触发器test1 DELIMITER $$ CREATE TRIGGER test1 AFTER INSERT ON `ord` FOR EACH ROW BEGIN UPDATE goods SET num= num - new.much WHERE goods_id = new.gid; END$$
mysql> CREATE TRIGGER test1 -> AFTER -> INSERT -> ON `ord` -> FOR EACH ROW -> BEGIN -> UPDATE goods SET num= num - new.much WHERE goods_id = new.gid; -> END$$ Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO `ord` VALUES (1, 2, 2)$$ Query OK, 1 row affected (0.03 sec) mysql> select * from ord$$ +------+------+------+ | oid | gid | much | +------+------+------+ | 1 | 2 | 2 | +------+------+------+ 1 row in set (0.00 sec) mysql> select * from goods$$ +----------+------+------+ | goods_id | name | num | +----------+------+------+ | 1 | cat | 26 | | 2 | dog | 24 | | 3 | pig | 26 | +----------+------+------+ 3 rows in set (0.00 sec) goods表里面的dog由26变成24
2、用户取消订单后商品库存订单的商品数要正常入库。以下只写触发器trigger,操作过程不写太多比较乱。
#触发器test2 CREATE TRIGGER test2 AFTER DELETE ON `ord` FOR EACH ROW BEGIN UPDATE goods SET num = num + old.much WHERE goods_id = old.gid; END $$
3、用户更新订单的时候,商品库存要根据订单的数量正常更新。
#触发器test3 CREATE TRIGGER test3 AFTER UPDATE ON `ord` FOR EACH ROW BEGIN UPDATE goods SET num = num + old.much - new.much WHERE goods_id = new.gid; END$$
查询触发器
删除触发器
内容总结
以上是互联网集市为您收集整理的MySQL触发器trigger学习_MySQL全部内容,希望文章能够帮你解决MySQL触发器trigger学习_MySQL所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。