SQL триггер для добавления некоторых данных - PullRequest
3 голосов
/ 26 апреля 2020

Спасибо за вашу помощь.

У меня есть 3 таблицы на MySQL, и это увеличится в будущем. Одна таблица для моих пользователей, вторая - для пользовательских функций, третья - для ролей. Прежде всего, мне нужно добавить регистрацию в таблицу функций, когда пользователи вставлены. Я имею в виду, если я добавлю нового пользователя в tbl_users, триггер сработает, и он захватит новую строку. и выберите просто id и напишите на tbl_measures, вот и все. Мне нужно только это.

INSERT INTO tbl_measures (user_id) VALUES (tbl_users.id) 

это мои триггеры, это работает частично. когда я добавляю новый пользовательский триггер, добавляем новую строку в tbl_measures без идентификатора.

tables shema

Ответы [ 2 ]

1 голос
/ 26 апреля 2020

Когда вы ссылаетесь NEW.id в вашем insert trigger, есть два основных случая. В первом случае вы получите правильное значение id. Это то, что вы ожидаете. Во втором случае это null. Вот что происходит.

Существенным является то, работает ли trigger before или after insert. Before insert id не существует, поскольку запись еще не была создана. After insert id существует. Короткий код истории:

DELIMITER //

CREATE TRIGGER PROOFOFCONCEPT
AFTER INSERT
ON EACH ROW
BEGIN

    INSERT INTO tbl_measures(user_id)
    VALUES (NEW.id);

END; //

DELIMITER ;
0 голосов
/ 27 апреля 2020

Я нашел решение, если кому-то нужно

СОЗДАТЬ ТРИГГЕР after_members_insert ПОСЛЕ ВСТАВКИ НА tbl_users ДЛЯ КАЖДОЙ СТРОКИ НАЧАТЬ ВСТАВИТЬ tbl_measures (user_id) VALUES (new.id); END

...