Синтаксис тела триггера представляется действительным.
Практически в каждом клиенте SQL существует механизм для обнаружения состояния ошибки и получения сообщения об ошибке. Возможно, ошибка связана с попыткой нарушить уникальное ограничение для столбца custid
в quicknotedesc
или с каким-либо другим нарушением ограничения. Мы просто догадываемся.
Рассмотрите возможность включения клиента для получения фактического сообщения об ошибке. И попробуйте проверить поведение триггера от другого клиента, такого как клиент командной строки MySQL.
Опять же, чтобы ответить на заданный вопрос:
Синтаксис тела триггера представляется действительным.
Демонстрация:
CREATE TABLE quicknotedesc
( custid BIGINT UNSIGNED NOT NULL
, moonid BIGINT UNSIGNED NOT NULL
, PRIMARY KEY (custid, moonid)
);
CREATE TABLE foo
( id BIGINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT
);
DELIMITER $$
CREATE TRIGGER foo_ai
AFTER INSERT ON foo
FOR EACH ROW
BEGIN
SET @moonid = 1;
INSERT INTO quicknotedesc (custid,moonid) VALUES (New.id,(@moonid)),(New.id,(@moonid+1));
END$$
DELIMITER ;
INSERT INTO foo (id) VALUES (NULL) ;
1 row(s) affected
SELECT * FROM quicknotedesc ;
custid moonid
------ ------
1 1
1 2