Я создал триггер (никогда не делал этого раньше).
Моя цель:
, когда один или несколько строк, которые вставляются в таблицу «userlite»
Если есть строки с «IdLite», как в новой строки, вставленной в таблицу «litedetails»
ТОГДА добавить строку таблица «информация» для каждой подсчитанной строки.Что может сделать сбой триггера, и что произойдет, если он сбой
новых полей строк данных будет:
IdUser -> с новой строки, вставленной в таблицу «userlite»
IdLite -> это то же самое на новой строки, вставленной в таблицу 'userlite' и в строки, выбранных из таблицы
IdEvent '' litedetails -> из выбранных строк
Я использовал следующий код для создания триггера
DELIMITER $$
CREATE TRIGGER after_newuserlite
AFTER INSERT ON userlite
FOR EACH ROW
BEGIN
IF (
(
SELECT COUNT(*)
FROM litedetails
WHERE IdLite = NEW.IdLite
) > 0
) THEN
INSERT INTO informations (IdUser, IdLite, IdEvent)
SELECT NEW.IdUser AS IdUser, IdLite, IdEvent
FROM litedetails
WHERE IdLite = NEW.IdLite;
END IF;
END;
$$
Я проверил его, и все, кажется, работает, но я волнуюсь за мою неопытность, поэтому мои вопросы:
1) Есть ли что-нибудь, что может вызвать сбой моего триггера?
2) что произойдет, если сработает триггер?
3) Если сбой триггера, запрос, который запустил триггер, будет поддерживать его эффекты?
Вам следует исследовать транзакции, так как они гарантируют, что все действия произойдут или никаких действий не произойдет. –
@TobyAllen Спасибо за ваш комментарий, но, как я уже сказал, я никогда раньше не использовал триггеры, поэтому я не знаю, как правильно его проверить. – genespos
Вы исследовали транзакции? –