使用触发器可以定制用户对表进行【增、删、改】操作时前后的行为,注意:没有查询
# 增=》insert
create trigger tri_before_insert_t1 before insert on t1 for each row
begin
sql语句;
end
create trigger tri_after_insert_t1 after insert on t1 for each row
begin
sql语句;
end
# 删除=》delete
create trigger tri_before_delete_t1 before delete on t1 for each row
begin
sql语句;
end
create trigger tri_after_delete_t1 after delete on t1 for each row
begin
sql语句;
end
# 修改=》update
# 例如
insert into tt1 values(1,"egon",'male');
delimiter //
create trigger tri_before_insert_tt1 before insert on tt1 for each row
begin
insert into tt2 values(NEW.name);
end //
delimiter ;
insert into tt1 values(2,"tom",'female');
# 练习
CREATE TABLE cmd (
id INT PRIMARY KEY auto_increment,
USER CHAR (32),
priv CHAR (10),
cmd CHAR (64),
sub_time datetime, #提交时间
success enum ('yes', 'no') #0代表执行失败
);
CREATE TABLE errlog (
id INT PRIMARY KEY auto_increment,
err_cmd CHAR (64),
err_time datetime
);
delimiter $$
create trigger tri_after_insert_cmd after insert on cmd for each row
begin
if NEW.success = 'no' then
insert into errlog(err_cmd,err_time) values(NEW.cmd,NEW.sub_time);
end if;
end $$
delimiter ;
insert into cmd(user,priv,cmd,sub_time,success) values
('egon','0755','ls -l /etc',NOW(),'yes'),
('egon','0755','cat /etc/passwd',NOW(),'no'),
('egon','0755','useradd xxx',NOW(),'no'),
('egon','0755','ps aux',NOW(),'yes');
drop trigger tri_after_insert_cmd ;
111 触发器
猜你喜欢
转载自blog.csdn.net/qq_40808228/article/details/108502107
今日推荐
周排行