mysql触发器学习
来源:互联网 发布:退货 淘宝帐号是什么 编辑:程序博客网 时间:2024/05/14 21:36
先创建两张表,一张货物表,一张订单表
上面的触发器是固定的,不灵活。所以下面提供灵活的方法
上面的 $为结束符
注意:一张表不能创建两个相同操作的触发器,否则会报错。所以在创建第二个触发器前,我先把之前创建的触发器删除掉
触发器t2,已经在上面的ord表中了,就不写了
DROP TABLE IF EXISTS `goods`;CREATE TABLE `goods` ( `gid` int(11) DEFAULT NULL, `name` varchar(20) DEFAULT NULL, `num` smallint(6) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1;-- ------------------------------ Records of goods-- ----------------------------INSERT INTO `goods` VALUES ('1', 'cat', '33');INSERT INTO `goods` VALUES ('2', 'dog', '34');INSERT INTO `goods` VALUES ('3', 'pig', '55');
-- ------------------------------ Table structure for ord-- ----------------------------DROP TABLE IF EXISTS `ord`;CREATE TABLE `ord` ( `oid` int(11) DEFAULT NULL, `gid` int(11) DEFAULT NULL, `much` smallint(6) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1;-- ------------------------------ Records of ord-- ----------------------------INSERT INTO `ord` VALUES ('1', '1', '1');INSERT INTO `ord` VALUES (null, '2', '2');DROP TRIGGER IF EXISTS `t2`;DELIMITER ;;CREATE TRIGGER `t2` AFTER INSERT ON `ord` FOR EACH ROW BEGINUPDATE goodsSET num = num - new.muchWHEREgid = new.gid;END;;DELIMITER ;
目的:使用触发器当订单表中新增一条订单时,货物中则对应减少购买的数量
第一种:
create trigger t1 after insert on ord for each row begin update goods set num=num-1 where gid =1; end
上面的触发器是固定的,不灵活。所以下面提供灵活的方法
查看自定义的触发器:
show triggers \G$
上面的 $为结束符
delimiter $
注意:一张表不能创建两个相同操作的触发器,否则会报错。所以在创建第二个触发器前,我先把之前创建的触发器删除掉
drop trigger t2$
触发器t2,已经在上面的ord表中了,就不写了
===触发器的引用行变量
看上面写的触发器,用到了new。是表示什么意思呢?
当新增一行时,用new 表是新行
当删除一行时,用old 表示旧行
结果:每当ord表有新增一条数据时,就会触发写的触发器,从而去更新goods表
下面的链接讲的更详细,呵呵
http://www.cnblogs.com/zzwlovegfj/archive/2012/07/04/2576989.html 0 0
- mysql 触发器学习
- MySql触发器学习
- mysql 触发器学习
- MySQL 触发器简单学习
- mysql 触发器学习
- mysql 触发器学习
- mysql触发器学习
- mysql 触发器学习
- mysql触发器学习
- mysql 触发器学习
- MySQL触发器 trigger学习
- mysql触发器学习
- mysql触发器学习
- mysql 触发器学习
- mysql触发器学习
- mysql学习之触发器
- MySQL 触发器学习
- MySQL学习之触发器
- S5P4418开发板 A9四核 开发板
- Manacher算法--O(n)回文子串算法
- 关于中文乱码的解决方法
- 有趣的数学
- git 查看远程分支、本地分支、创建分支、把分支推到远程repository、删除本地分支
- mysql触发器学习
- postfix+cyrus-sasl+extmail+dovecot基于MySQL认证的邮件系统
- 汇总
- Xmpp学习资料
- java限制输入数据保留小数位数的方法
- 社説 20150513 陸自宮古島配備 「空白」解消で抑止力を高めよ
- 一、spring mvc的获取参数和传递参数
- 使用jvm缓存不clone后在使用写操作,会有问题
- 社説 20150513 震災復興事業 やむを得ぬ自治体の一部負担