Триггер для вставки значений из таблицы C в таблицу B после вставки в таблицу A - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь создать триггер в mysql, который обновляет таблицу B значениями из таблицы C после вставки новой записи в таблицу A. Я пробовал несколько вариантов кода ниже, но могу не заставить его работать. Кто-нибудь может указать мне правильное направление?

 delimiter //
 CREATE TRIGGER updateC AFTER Insert ON Table A
       FOR EACH ROW in TableB
       BEGIN
           IF TableB.Group = 1 THEN
               Insert into TableC(inserthere) values (TableB.AddThis);
           END IF;
       END;//
delimiter ;

Таблица A содержит поля ProjectID | TaskGroup.

Таблица B содержит поля ID | DefaultTask | TaskGroup.

Таблица C включает в себя поля ID | ProjectID | DefaultTask.

При добавлении нового ProjectID & TaskGroup в таблицу A я хотел бы найти все DefaultTasks в TableB, которые имеют ту же TaskGroup, а затем вставить эти DefaultTasks & ProjectID в качестве новых записей в таблице C

Ответы [ 2 ]

0 голосов
/ 11 апреля 2020

После Вас e объяснение в комментарии.

Это показывает, как это сделать, вы должны протестировать Запрос INSERT, он предполагает, что id является автоинкрементом.

Каждое NEW.columname является значением вставленной строки.

С INSERT INTO ... SELCT Вы можете создать массовую вставку из всех значений из Taböleb, отвечающих всем требованиям.

 DELIMITER //
 CREATE TRIGGER updateC AFTER Insert ON TableA
       FOR EACH ROW
       BEGIN
        INSERT INTO TableC (ProjectID,DefaultTask) SELECT NEW.ProjectID,DefaultTask
                                                    FROM TABLEB 
                                                    WHERE TaskGroup = NEW.TaskGroup;
       END;//
DELIMITER ;

К вашему сведению: запись sql Команды в верхнем регистре, они значительно читают более простой

0 голосов
/ 10 апреля 2020

Кто-нибудь может указать мне правильное направление?

Запись, вставленная в A, должна определять записи в B, которые должны быть обновлены, и записи в C какие значения должны быть приняты для этого обновления.

Например, это может быть

CREATE TRIGGER updateC 
AFTER INSERT 
ON Table A
FOR EACH ROW
UPDATE B, C
SET B.field1 = C.field2
WHERE B.field3 = NEW.field4
  AND C.field5 = NEW.field6;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...