Я создал таблицу для хранения версии программного обеспечения (это пример) со столбцом идентификатора, датой начала и датой окончания. Дата начала известна, когда запись вставлена, но не дата окончания, которая зависит от даты создания новой версии.
Моя идея состоит в том, чтобы ввести переменную как NULL:
CREATE TABLE table1 (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
start_date DATE NOT NULL,
end_date DATE,
);
После создания новой версии значение NULL изменяется на реальную дату. Есть ли способ сделать это автоматически, когда новая запись вставлена в таблицу?
РЕДАКТИРОВАТЬ: Я пытался это в БД Fiddle:
CREATE TABLE kit (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(45), start
DATE, end DATE);
INSERT INTO kit (name, start)
VALUES("V1.0", "2018-09-18");
DELIMITER //
CREATE TRIGGER update_version AFTER INSERT ON kit
FOR EACH ROW
BEGIN
SET OLD.end = CURDATE();
END //
DELIMITER ;
INSERT INTO kit (name, start) VALUES("V2.0", "2019-04-16");
После этого я получил эту ошибку:
Schema Error: Error: ER_TRG_CANT_CHANGE_ROW: Updating of OLD row is not
allowed in trigger
Есть ли способ сделать это?