У меня есть таблица а точнее запрос который создает таблицу в бд
CREATE TABLE IF NOT EXISTS `airdrops` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(256) NOT NULL,
`token_name` varchar(256) NOT NULL,
`image` varchar(256) NOT NULL,
`status` int(11) NOT NULL DEFAULT 0,
`created` datetime NOT NULL,
`start_date` datetime NOT NULL,
`end_date` datetime NOT NULL,
`modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
После создания таблицы я добавляю несколько материалов с датами и триггер на изменения статуса в строке
статус но он по какой то причине не хочет работать корректно.
Мне нужно сделать так что если дата создания `created` меньше за дату старта `start_date` то статус был
0, если наступила дата старта `start_date` и текущая дата меньше или равна дате окончания `end_date` то статус был
1, а если текущая дата больше за дату окончания `end_date` то статус был 2.
Мой триггер
DELIMITER $$
CREATE TRIGGER update_status_before_insert BEFORE INSERT ON airdrops
FOR EACH ROW
BEGIN
IF NEW.created < NEW.start_date THEN
SET NEW.status = 0;
ELSEIF NOW() > NEW.end_date THEN
SET NEW.status = 2;
ELSEIF NEW.created <= NEW.start_date AND NEW.created < NEW.end_date THEN
SET NEW.status = 1;
END IF;
END$$
CREATE TRIGGER update_status_before_update BEFORE UPDATE ON airdrops
FOR EACH ROW
BEGIN
IF NEW.created < NEW.start_date THEN
SET NEW.status = 0;
ELSEIF NOW() > NEW.end_date THEN
SET NEW.status = 2;
ELSEIF NEW.created <= NEW.start_date AND NEW.created < NEW.end_date THEN
SET NEW.status = 1;
END IF;
END$$
DELIMITER ;
Пробовал так но нечего не помогло
DELIMITER $$
CREATE TRIGGER update_status_before_insert BEFORE INSERT ON airdrops
FOR EACH ROW
BEGIN
IF NEW.created < NEW.start_date THEN
SET NEW.status = 0;
ELSEIF NOW() > NEW.end_date THEN
SET NEW.status = 2;
ELSEIF NOW() >= NEW.start_date AND NEW.start_date <= NEW.end_date THEN
SET NEW.status = 1;
END IF;
END$$
CREATE TRIGGER update_status_before_update BEFORE UPDATE ON airdrops
FOR EACH ROW
BEGIN
IF NEW.created < NEW.start_date THEN
SET NEW.status = 0;
ELSEIF NOW() > NEW.end_date THEN
SET NEW.status = 2;
ELSEIF NOW() >= NEW.start_date AND NEW.start_date <= NEW.end_date THEN
SET NEW.status = 1;
END IF;
END$$
DELIMITER ;