MYSQL:
DELIMITER $$create TRIGGER 'unit' beforeinsert ON 'cart' FOR each row
BEGIN
IF(EXISTS
(
SELECT 1
FROM 'cart'
WHERE 'USER' = new.USER
AND 'item' = new.item)) THEN
UPDATE 'cart'
SET 'unit' = new.unit,
'quantity' = new.quantity
WHERE 'USER' = new.USER
AND 'item' = new.item;ENDIF;
END
$$ delimiter ;
Ошибка:
Can't update table 'cart' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
Когда я пытаюсь вставить данные, если они уже существуют, тогда появляется ошибка. Я хочу обновить данные, если элемент уже находится в корзине. Как я могу решить эту ошибку?
Вы не можете ОБНОВЛЯТЬ внутри триггера INSERT вместо выполнения INSERT. Вам нужно либо проверить запись перед вставкой в вашем коде, либо, возможно, изучить инструкцию ON DUPLICATE KEY UPDATE:
INSERT INTO t1 (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;