【发布时间】:2017-07-25 21:13:00
【问题描述】:
我正在插入表格:
fruit:
fruit_id | name
-----------|----------
1 | apple
----------------------
我还有一张桌子:
basket:
basket_id | fruit_id | name
------------|--------------|-----------
345 | 1 | apple
789 | 2 | grape
当我插入时:
insert into fruit (fruit_id) values (2)
我想根据购物篮表中的名称更新“名称”列。
我正在尝试使用此触发器来执行此操作:
create trigger add_fruit_name
after insert
on fruit
for each row
DECLARE
BEGIN
update fruit
set (name) =
(select name from basket
where :new.fruit_id = basket.fruit_id);
commit;
END;
/
我尝试使用此触发器插入时的错误是:
table FRUIT is mutating, trigger/function may not see it
有什么想法吗?
【问题讨论】:
-
如果不使用自治事务,您无法从与该表关联的基于行的触发器内部更改该表。使用前触发器,直接设置:new row列的值?
-
你是对的,谢谢。
标签: oracle plsql database-trigger