Я создал этот триггер в MySQL (после обновления на столе продукта):Ошибка SQL (1442), любое решение?
BEGIN
set @parentid := (select parent_id from product where product_id = new.product_id);
if (old.price <> new.price) then
update product set price=new.price where product_id = @parentid and price > new.price;
end if;
END
Но, когда я обновляю цену, я получаю эту ошибку
: SQL Error (1442) Не удается обновить table 'product' в хранении function/trigger, потому что он уже используется оператором, который вызывается этой хранимой функцией/триггером. */
Я создал две таблицы и два триггера, как:
Trigger 1
(после обновления на столе продукта):
BEGIN
if (old.price <> new.price) then
insert into product_price
(product_id, price , date_added)
values
(new.product_id, new.price, SYSDATE());
end if;
END
Trigger 2
(после вставки на столе product_price
):
BEGIN
SET @parentid := (select parent_id from product where product_id = new.product_id);
if (@parentid >0) then
update product set price=new.price where product_id in (select @parentid);
end if;
END
Но, я снова получил эту ошибку.
Мне действительно нужно обновить родительскую цену, когда цена ребенка изменилась, есть ли у вас какое-либо решение?
Спасибо.
Что именно вы пытаетесь сделать? Какое значение вы хотите, чтобы product.price имел после того, как вы только что обновили его явно? – JRD
@JRD Он не вносит никаких изменений в строку, которая вставлена или обновлена, он пытается обновить родительский продукт. – Barmar
У меня есть некоторые дочерние продукты, и мне нужно отображать самую дешевую цену для детей на родительском продукте. –