我插入到表:更新插入的行与触发
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
什么想法?
您不能在不使用自治事务的情况下,改变与该表关联的基于行的触发器内部的表。使用before触发器,并直接设置:new row列的值? –
你是对的,谢谢。 – user3329046