milana1980 05.02.2023 11:16

Как создать триггер в SQL?

Здравствуйте! У меня возникла проблема с созданием триггера в SQL, и я не могу разобраться, как это сделать. Может быть, кто-то сможет мне помочь? У меня есть таблица "users" с полями "id", "name", "email" и "status". Я хочу создать триггер, чтобы при добавлении нового пользователя с "status = 'active'", автоматически устанавливался текущий timestamp в поле "created_at". Я пробовала разные варианты, но ничего не получается. Вот мой последний неудачный код:

CREATE TRIGGER set_created_at AFTER INSERT ON users
FOR EACH ROW
BEGIN
    IF NEW.status = 'active' THEN
        SET NEW.created_at = NOW();
    END IF;
END;
Подскажите, что я делаю не так и как правильно создать такой триггер в SQL? Заранее благодарю за помощь!

Ответы:

Tanya27Volunteer 05.02.2023 11:31
Похоже, у тебя ошибка в коде создания триггера. Вместо "AFTER INSERT" ты должна использовать "BEFORE INSERT", чтобы установить значение "created_at" до вставки нового пользователя. Попробуй вот такой код:

CREATE TRIGGER set_created_at BEFORE INSERT ON users
FOR EACH ROW
BEGIN
    IF NEW.status = 'active' THEN
        SET NEW.created_at = NOW();
    END IF;
END;
Теперь, когда будет добавлен новый пользователь со статусом "active", поле "created_at" будет автоматически заполняться текущим timestamp. Убедись, что в поле "created_at" у тебя установлен тип данных "TIMESTAMP" или "DATETIME". Удачи!

Добавить ответ