Я получил эту datebase структуру:триггера MYSQL после вставки => вставить вторую таблицу => перед тем триггер вставки не работает
CREATE TABLE `user` (
`usr_id` bigint(20) NOT NULL AUTO_INCREMENT,
`usr_mail` varchar(64) NOT NULL,
`usr_creationdate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`usr_id`)
);
CREATE TABLE `user_activation` (
`usract_id` bigint(20) NOT NULL AUTO_INCREMENT,
`usr_id` bigint(20) NOT NULL,
`usract_key` text NOT NULL,
`usract_used` int(11) NOT NULL DEFAULT '0',
`usract_creationdate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`usract_usagedate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`usract_expiredate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TRIGGER `USER_INSERT_ADD_ACTIVATION` AFTER INSERT ON `user`
FOR EACH ROW
INSERT INTO user_activation (usr_id, usract_key)
VALUES (NEW.usr_id, UUID());
CREATE TRIGGER `USRACT_INSER_SET_EXPIREDATA` BEFORE INSERT ON `user_activation`
FOR EACH ROW
SET NEW.usract_expiredate = DATE_ADD(NOW(), INTERVAL 1 DAY);
Когда я вставить данные в таблицу user_activation
моего user_activation.usract_expiredate
обновляется на следующий день. Если я вставляю данные в таблицу user
, строка вставляется в user_activation
, но user_activation.usract_expiredate
не будет установлена на следующий день. Кажется, что второй триггер не выполняется.
Я делаю что-то неправильно с триггерами?
Я знаю, что я мог бы решить мою проблему с установкой времени в другом триггере. Но поскольку я планирую иметь больше таблиц, которые используют таблицу 'user_activation', мне не нравится идея, что я должен записать ее во все триггеры, которые я настраиваю. Обычно нужно вызвать второй триггер. Я просто хотел бы знать, почему это не называется. – MadddinTribleD
Ваш триггер (тот, который я предложил удалить) на самом деле вызывает. но это значение не используется, потому что вы, вероятно, знаете какой-то другой код или триггер, который его переопределяет. – e4c5
Также имейте в виду, что наличие нескольких триггеров, запускаемых для каждой вставки, замедляет эти вставки. – e4c5