我插入到表:更新插入的行與觸發
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