Включите ВСТАВЛЯЮТ НА, ДЕЛАЮТ ДУБЛИКАТ КЛЮЧА

У меня есть простой вопрос. У меня есть триггер для вставки значений в другую Базу данных

Так, например, если существует два значения, и триггер регистрирует значение Table A и вставка в Table B

Таким образом, вот код

-- Trigger DDL Statements
USE `db`;
DELIMITER //

CREATE
DEFINER=CURRENT_USER()
TRIGGER `db`.`AFTER_INSERT_A`
AFTER INSERT ON `db`.`a`
FOR EACH ROW
BEGIN

    IF NEW.val!= NULL
    THEN

        UPDATE b SET dateRemove=CURRENT_TIMESTAMP WHERE val=NEW.val;

        INSERT INTO b (val) VALUES(NEW.val) ON DUPLICATE KEY UPDATE dateRemove=NULL, dateUpdate=CURRENT_TIMESTAMP;

    END IF;
END//

Триггерный преподаватель даже бросает любые ошибки. И у меня нет значений в B

Моя Вставка

INSERT INTO a (val) VALUES(`test`) ON DUPLICATE KEY UPDATE dateUpdate=CURRENT_TIMESTAMP

Имеет любой получил любые идеи. Я попытался создать два триггера один INSERTи другой UPDATE, Я изменился AFTER кому: BEFORE и моя таблица b все еще ничего не получил. Любые идеи заранее спасибо

9
задан Angel.King.47 1 July 2010 в 14:36
поделиться

2 ответа

Триггер, запускаемый на запрос типа

INSERT INTO table (x, y, z) VALUES('x', 'y', 'z') ON DUPLICATE KEY UPDATE x=VALUES(x);

всегда должен запускаться на BEFORE INSERT триггер.

10
ответ дан 2 November 2019 в 23:59
поделиться

Возможно, вместо

NEW.val!= NULL

нужно

NEW.val IS NOT NULL

Значение никогда не равно null, и оно никогда не равно null.

2
ответ дан 2 November 2019 в 23:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: