Мой стол:
CREATE TABLE `files_processed` (
`filename` varchar(128) NOT NULL,
`uploaded_by` varchar(64) NOT NULL,
`domain` varchar(255) NOT NULL,
`session_id` varchar(64) NOT NULL,
`datetime_uploaded` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`insert_data` tinyint(1) NOT NULL DEFAULT '1',
`generate_positives` tinyint(1) DEFAULT '1',
`generate_negatives` tinyint(1) NOT NULL DEFAULT '0',
`custom_rules` tinyint(1) NOT NULL DEFAULT '0',
`processing_stage` enum('completed','underway','wait','') NOT NULL DEFAULT 'wait',
`scheduled_processing_datetime` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Мой триггер:
DELIMITER $$
CREATE TRIGGER `setProcessingData` BEFORE INSERT ON `files_processed` FOR EACH ROW BEGIN
DECLARE vNextDtTime datetime;
DECLARE vDom varchar(255);
SET vDom = new.domain;
SET new.session_id=new.domain;
SELECT max(scheduled_processing_datetime)
INTO vNextDtTime
FROM files_processed
WHERE domain='@vDom';
IF (ISNULL(vNextDtTime))
THEN
SET vNextDtTime := now();
ELSE
SET vNextDtTime := DATE_ADD(vNextDtTime, interval 7 day);
END IF;
SET new.scheduled_processing_datetime := vNextDtTime;
END
$$
DELIMITER ;
Мои 2 вставки: ВСТАВИТЬ INTO files_processed (имя файла, uploaded_by, домен) VALUES ('1.txt', 'hcs. dfc@gmail.com', 'gmail.com'); Выше вставляется текущая метка времени, которая, как и ожидалось,
INSERT INTO files_processed (filename, uploaded_by, domain)
VALUES ('2.txt', 'hcs.dfc@gmail.com', 'gmail.com');
Теперь для этого выше, я ожидаю, что триггер добавит 7 дней, но он все еще обрабатывается как текущая метка времени.