DB----触发器

说明
  • 触发时机(只有2个):before, after
  • 触发事件(只有3个):insert, update, delete
  • 即触发器的含义是:在某个表上进行insert(update 或 delete)之前(后),会去执行其中写好的代码。即每个表只有6个情形会可以调用该触发器
  • 通常,触发器用于在对某个表进行增删改的操作的时候,需要同时去做另外一件事情的时候
  • 在触发器的内部,有2个关键字代表某种特定的含义,可以用获取数据:
new: 它代表当前正要执行的insertupdate 时候的'新行'数据
	set @v1 = new.id;    #获得该新插入或update 行的id 字段的值(前提是有该id)
	set @v2 = new.age;

old: 它代表当前正要执行的delete时候的'旧行'数据
	set @v1 = old.id;    #获得该新插入或update 行的id 字段的值(前提是有该id)
	set @v2 = old.age;
当在一个表中更新一条数据,那么我在另一张表中插入一条数据
delimiter ///
create trigger update_name
after update
on author for each row
begin
  INSERT INTO name_log (old_name , new_name)values(OLD.name , NEW.name);
end;
///
向t1表插入1条时同时也向t2插入1条数据
delimiter ///
create trigger tg1 before insert on t1 for each row;
                         ...delete...
                         ...update...
begin
insert into t1(name) vaules(new.name);

删除表t1后t2表中的记录跟着变
delete from t1 where name = old.name;

更改表t1后t2表中的记录跟着变
update t2 set name=new.name where name = old.name;

end;
///
在表tab_int进行insert 之前,将该行数据也同时插入到一个跟其类似结构的表(tab_int_some)中
create table tab_int_some(
	id int,
	age tinyint
);
 
delimiter ///
create trigger trigger_copy1 before insert on tab_int for each row
begin
	set @v1 = new.f1;    #获取新行字段f1的值
	set @v2 = new.f2;    #获取新行字段f2的值
	insert into tab_int_some(id, age) values(@v1, @v2);
end; ///

//test
insert into tab_int values(21,22,23);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值