mysql触发器的概述和创建案例

来源:互联网 发布:新浪微博抱歉网络繁忙 编辑:程序博客网 时间:2024/06/08 17:28
触发器
1:概述(四要素)
1:触发器: trigger 事先为某张表绑定好一段代码,当表中的某些内容发生改变的时候(增删改)系统会自动触发代码执行
2:触发器是一类特殊的事务 ,可以监视某种数据操作(insert/update/delete),并触发相关操作(insert/update/delete)。
3:触发器四要素

2:触发器的常用操作
1:创建触发器
1:mysql高级结构中,没有小括号,都是使用对应的字符符号代替
2:语法
Create trigger 触发器名字 触发时间 事件类型 on 表名 for each row 执行语句
begin 代表左大括号 开始
里面都是触发器内容,每行内容必须使用语句结束符:分号
end 代表右大括号 结束
--语句结束符
自定义符号
--将临时修改的修正过来
Delimiter ;
delimiter 自定义符号:后续代码中只有碰到自定义符号才结束

3:案例DEMO
1:创建商品表
CREATE TABLE t_goods(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20) NOT NULL,
price DECIMAL(10,2) DEFAULT 1 COMMENT '默认一元',
inv INT COMMENT '库存数量') CHARSET utf8;
插入数据
INSERT INTO t_goods(id,NAME,price,inv) VALUES(NULL,'华为荣耀5',1099,200);
INSERT INTO t_goods(id,NAME,price,inv) VALUES(NULL,'华为荣耀6',2099,256);
INSERT INTO t_goods(id,NAME,price,inv) VALUES(NULL,'华为荣耀8',3129,300);
INSERT INTO t_goods(id,NAME,price,inv) VALUES(NULL,'华为荣耀9',4566,1506);
INSERT INTO t_goods(id,NAME,price,inv) VALUES(NULL,'尼康520',15666,2506);
INSERT INTO t_goods(id,NAME,price,inv) VALUES(NULL,'瑞虎巡洋舰',268900,3500);

2:创建订单表
CREATE TABLE t_order(
id INT PRIMARY KEY AUTO_INCREMENT,
g_id INT NOT NULL COMMENT '商品ID',
g_nummer INT COMMENT '商品数量'
)CHARSET utf8;

3:触发器
订单生产一个,商品库存就减少一件对应的商品数量
DELIMITER $$
CREATE TRIGGER AFTER_order AFTER INSERT ON t_order FOR EACH ROW
BEGIN
UPDATE t_goods SET inv=inv-1 WHERE id=2;
END $$
DELIMITER ;

原创粉丝点击