Я пытаюсь создать триггер для импорта поля из другой таблицы при вставке новой строки, но получаю сообщение об ошибке:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END' at line 6
Я использую вкладку sql в phpmyadmin для ввода кода.
Я прочитал все связанные с этим вопросы здесь, просматривал несколько других сайтов со статьями о триггерах mysql, но не могу найти ничего, что могло бы помочь.
- Я пытался использовать // в конце строки перед END //
- Я пытался с; в конце строки до END //
Кажется, ничего не работает.
Мой код триггера:
DELIMITER //
CREATE TRIGGER towns2_before_insert
BEFORE INSERT ON towns2 FOR EACH ROW
BEGIN
SET NEW.regionid = (Select RegionID from world_map
where (world_map.X = new.mapx) AND (world_map.Y = new.mapy))
END//
DELIMITER ;
Обе таблицы town2 и world_map существуют и имеют обязательные столбцы.
Насколько я могу судить, следует извлечь поле RegionID из любой строки в таблице world_map, в которой поля X & Y соответствуют новым столбцам mapx и mapy, но все, что я могу получить, - это ошибка.
Нет сомнений, что где-то в этом есть действительно простая ошибка, но я не могу ее найти, и вся помощь оказывается с большим удовольствием.
UPDATE
Повторно создал код, как показано @Chris J ниже в форме триггера myphpadmin, проигнорировал большой красный X против оператора END и нажал кнопку GO - это сработало, поэтому я предполагаю, что проблема была не в моем коде, а в выбранном мной методе создания триггера. Код, созданный phpmyadmin, показан ниже:
CREATE TRIGGER `towns2_before_insert` BEFORE INSERT ON `towns2`
FOR EACH ROW BEGIN
SET NEW.regionid =
(Select RegionID from world_map
where (X = new.mapx) AND (Y = new.mapy));
END