MYSQL ошибка в триггере Как решить?

0

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.

Когда я пытаюсь вставить данные, если они уже существуют, тогда появляется ошибка. Я хочу обновить данные, если элемент уже находится в корзине. Как я могу решить эту ошибку?

Теги:

1 ответ

0

Вы не можете ОБНОВЛЯТЬ внутри триггера INSERT вместо выполнения INSERT. Вам нужно либо проверить запись перед вставкой в вашем коде, либо, возможно, изучить инструкцию ON DUPLICATE KEY UPDATE:

INSERT INTO t1 (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню