数据库触发器

触发器是一种预定义的存储过程,它在特定数据库事件(如向表中插入、更新或删除行)时自动执行。

通用格式:
create trigger trigger_name before|after TRIGGER_EVENT ON
TABLE_NAME FOR EACH ROW on_trigger_sql

TRIGGER_EVENT表示触发事件,即触发器执行条件(触发事件),包含delete、insert和update语句;
before、AFTER与DELETE、INSERT和UPDATE的组合共6种:
before insert : 在执行 insert之前,执行触发器
after insert : 在执行 insert 之后,执行触发器
before update :在执行 update之前,执行触发器
after update :在执行 update 之后,执行触发器
before delete :在执行 delete之前,执行触发器
after delete :在执行 delete 之后,执行触发器

以mysql为例:实现订单库存表(order_tbl)新增触发插入到新表

CREATE TRIGGER order_tbl_tguser_insert  ---触发器名字
AFTER INSERT ON order_tbl   ---指定操作,在插入表后
FOR EACH ROW
BEGIN   ---以下是触发后的操作
  INSERT INTO order_tbl_new(id,product_id,total_amount,status)
  VALUES(NEW.id,NEW.product_id,NEW.total_amount,NEW.status);
END;

oracle的情况下,博主验证到可能执行的时候个别情况需要改动,可能跟数据库事务有关

create or replace trigger order_tbl_tguser_insert  ---触发器名称
after insert on order_tbl              ---在新增之后进行操作,其他操作就将insert改为对应操作即可,例如update
for each row               ---每改动一行就同步下数据
DECLARE  ---这里也可以不定义数据库的参数
  PRAGMA AUTONOMOUS_TRANSACTION; --个别情况没有这句话就会触发异常
	n_id varchar2(999);
	n_product_id varchar2(999);
	n_total_amount varchar2(999);
	n_status varchar2(999);
begin
	n_id := :new.ID;
	n_product_id := :new.product_id;
	n_total_amount := :new.total_amount;
	n_status := :new.status;
  insert into order_tbl_new(id,product_id,total_amount,status) 
	values(n_id,n_product_id,n_total_amount,n_status);
 COMMIT;
end;

详细的可以参考:https://zhuanlan.zhihu.com/p/663101881
我这边只是做个简单使用记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谦风(Java)

一起学习,一起进步(✪ω✪)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值