У меня проблема с созданием триггеров при запуске с mysql, и я не знаю, почему. @. @
Таблица удалена, вновь создана и заполнена. Тогда триггеры должны быть созданы. Сценарий действительно прост:
USE dbname;
DROP TABLE `tag2kw`;
CREATE TABLE `tag2kw` ENGINE=MEMORY SELECT * FROM `tag2kw_origin`;
DELIMITER $$
CREATE TRIGGER `sync_tag2kw_insert` AFTER INSERT ON `tag2kw`
FOR EACH ROW
BEGIN
//std insert into tag2kw_origin
END$$
DELIMITER ;
Странно, что он работает в Gui, а также с помощью команды оболочки. Но только если скрипт выполняется как mysql init-файл.
Первая часть (удаление и создание) работает там, но триггеры не создаются.
Да, я могу сделать скрипт оболочки в панели задач, но я хотел бы иметь его непосредственно в mysql.
Кто-нибудь есть какие-либо идеи, где проблема?
[править]
Эта вставка внутри триггера является стандартной вставить.
Если я создаю триггеры через оболочку, они также работают должным образом.
Вот почему я удалил вставку для разборчивости. Вставка:
INSERT INTO tag2kw_origin (
tag2kw_id, lk2einl_id, datum, uhrzeit_von, uhrzeit_bis, mitarbeiter_id, mitarbeiter_id_2, raum_id, raum_id_2, raum_id_3, aktiv
) VALUES (
NEW.tag2kw_id, NEW.lk2einl_id, NEW.datum, NEW.uhrzeit_von, NEW.uhrzeit_bis, NEW.mitarbeiter_id, NEW.mitarbeiter_id_2, NEW.raum_id, NEW.raum_id_2, NEW.raum_id_3, NEW.aktiv
);
[редактировать и решить] твой для быстрых ответов: D
Если я удаляю начало + конец после «для каждой строки», я не нужен разделитель, и без разделителя он работает отлично. :)
Теперь это выглядит так:
USE dbname;
DROP TABLE `tag2kw`;
CREATE TABLE `tag2kw` ENGINE=MEMORY SELECT * FROM `tag2kw_origin`;
CREATE TRIGGER `sync_tag2kw_insert` AFTER INSERT ON `tag2kw`
FOR EACH ROW
//std insert into tag2kw_origin;
//create other trigger