2013-08-07 4 views
2

Как обновить значение столбца до значения «Старый» плюс «Новое значение» из другой таблицы, используя «Триггер», если это значение уже имеет запись? То, что я хотел, это что-то вроде следующего. Обратите внимание на жирную и выделенную часть.Как обновить значение столбца до значения «Старое» плюс «Новое значение» из другой таблицы с помощью триггера?

DELIMITER$$ 
CREATE TRIGGER trigger_name AFTER INSERT 
ON table_one FOR EACH ROW 
BEGIN 
    INSERT INTO table_two(clmn_id, clmn_one) VALUES(NEW.clmn_id_fk,NEW.clmn_a) 
    ON DUPLICATE KEY UPDATE clmn_one = VALUES(clmn_one + NEW.clmn_a); 
END$$ 
DELIMITER;

ответ

3

Попробуйте удалить ключевое слово VALUES от KEY ON DUPLICATE:

DELIMITER$$ 
CREATE TRIGGER trigger_name AFTER INSERT 
ON table_one FOR EACH ROW 
BEGIN 
    INSERT INTO table_two(clmn_id, clmn_one) VALUES(NEW.clmn_id_fk,NEW.clmn_a) 
    ON DUPLICATE KEY UPDATE fine_amount = clmn_one + NEW.clmn_a; 
END$$ 
DELIMITER; 
+1

Вы избили меня на 1 минуту! См. Http://sqlfiddle.com/#!2/2321f6/1 –

+0

Для обновления он отлично работает, но теперь он не будет работать для вставки нового значения. – MikeGte

+0

В чем проблема, которую вы получаете? –

0

Похоже, что сначала требуется инструкция выбора, чтобы проверить, существует ли она. Если да, установите переменные в текущие значения, затем запустите обновление, которое объединяет старые значения (переменные) и новые значения. Если запись еще не существует, запустите инструкцию insert с текущими значениями.

Смежные вопросы