MySQL数据库----触发器

触发器-trigger

触发器:监视某种情况,并触发某种操作。

使用触发器可以定制用户对表进行【增、删、改】操作时前后的行为,注意:没有查询

-- 触发器:某种程序触发了工具的运行
-- 触发器不能主动调用,只有触发了某种行为才会调用触发器的执行
-- 插入一条记录就触发一次
-- 还是建议不要用触发器,因为这是BDA管理的,还是不如你在程序里面直接写比较方便

1.创建触发器的语法

create
trigger trigger_name
trigger_time trigger_event
on tbl_name for each row
triggrr_body #主体,就是在触发器里干什么事
trigger_time:{before | after}
trigger_event:{insert | update |detele}

准备表

-- # 2.准备表
-- #第一步:准备表
create table cmd_log(
id int primary key auto_increment,
cmd_name char(64), #命令的名字
sub_time datetime, #提交时间
user_name char(32), #是哪个用户过来执行这个命令
is_success enum('yes','no') #命令是否执行成功
); create table err_log(
id int primary key auto_increment,
cname char(64), #命令的名字
stime datetime #提交时间
);

创建触发器

-- #创建触发器(向err_log表里插入最新的记录)
delimiter //
create
trigger tri_after_inser_cmd_log
after insert
on cmd_log for each row
BEGIN
if new.is_success = 'no' then
insert into err_log(cname,stime) VALUES(new.cmd_name,new.sub_time);
end if; #记得加分号,mysql一加分号代表结束,那么就得声明一下
END //
delimiter ; #还原的最原始的状态 -- #创建触发器(向err_log表里插入最旧的记录)
delimiter //
create
trigger tri_after_inser_cmd_log1
after delete
on cmd_log for each row
BEGIN
if old.is_success = 'no' then
insert into err_log(cname,stime) VALUES(old.cmd_name,old.sub_time);
end if; #记得加分号,mysql一加分号代表结束,那么就得声明一下
END //
delimiter ; #还原的最原始的状态
DELETE from cmd_log where id=1;
-- 触发器的两个关键字:new ,old
-- new :表示新的记录
-- old:表示旧的那条记录
-- 什么情况下才往里面插记录
-- 当命令输入错误的时候就把错误的记录插入到err_log表中
1. 插入事件触发器
INSERT INTO order_table(gid,much) VALUES(1,3); -- update goods set num = num -3 where id =1; CREATE TRIGGER tg1 AFTER INSERT on order_table
for EACH row -- 固定写法
BEGIN
update goods set num = num -new.much where id =new.gid;
END -- 删除触发器
drop TRIGGER TG1; 2.更新事件触发器
update order_table set much = much +2 where oid = 6; update goods set num = num+2 where id = 1; create TRIGGER tg2 AFTER UPDATE ON order_table
for EACH ROW
BEGIN
update goods set num = num+old.much - new.much where id = old.gid;
END
3.删除事件触发器
DELETE FROM order_table where oid =6; update goods set num = num + 3 where id = 1; create TRIGGER tg3 AFTER DELETE on order_table
for EACH ROW
BEGIN
update goods set num = num + old.much where id = old.gid;
END
4.查看触发器
show tiggers;
上一篇:JavaScript DOM编程艺术学习笔记-第二章JavaScript语法


下一篇:传统产业如何创新升级