У меня возникли проблемы с созданием триггера ДО НАЧАЛА ВСТАВКИ.MySql Триггер перед вставкой не работает
схема таблицы:
CREATE TABLE IF NOT EXISTS `myReferenceTable` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`linkFrom` bigint(20) NOT NULL,
`linkTo` bigint(20) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `linkFrom` (`linkFrom`,`linkTo`),
KEY `linkTo` (`linkTo`)
) ENGINE=InnoDB
вставки данных:
INSERT INTO `myReferenceTable` (`id`, `linkFrom`, `linkTo`) VALUES
(1, 1, 2), // allowed
(2, 2, 1); // allowed
Моя неудавшаяся попытка создать ПЕРЕД ВСТАВИТЬ триггер, который не позволит linkFrom
и linkTo
равным друг с другом. Эта таблица articleReferncesTable не может иметь какие-либо статьи ссылаются на это сам,
/* This fails */
create trigger myReferenceTable_noDuplicate
BEFORE INSERT
ON myReferenceTable
FOR EACH ROW
BEGIN
IF NEW.linkFrom = NEW.linkTo
insert ignore()
END IF;
END;
Пример:
INSERT INTO `myReferenceTable` (`id`, `linkFrom`, `linkTo`) VALUES
(3, 1, 1), // should fail
(4, 2, 2); // should fail
выше данные не допускается. Поэтому я хочу эту таблицу, чтобы быть «установить» таблицы следующие данные позволили:
INSERT INTO `myReferenceTable` (`id`, `linkFrom`, `linkTo`) VALUES
(3, 1, 2), // allowed
(4, 1, 3); // allowed