mysql создание триггера в init-файле не работает - PullRequest
0 голосов
/ 18 марта 2020

У меня проблема с созданием триггеров при запуске с 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...