Как автоматически обновлять переменную ДАТЫ?

#mysql #datetime

#mysql #дата и время

Вопрос:

Я создал таблицу для хранения версии программного обеспечения (это пример) со столбцом id, датой начала и датой окончания. Дата начала известна при вставке записи, но не дата окончания, которая зависит от даты создания новой версии.

Моя идея состоит в том, чтобы ввести переменную как NULL:

 CREATE TABLE table1 (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
start_date DATE NOT NULL,
end_date DATE,
);
  

После создания новой версии значение NULL изменяется на реальную дату. Есть ли какой-либо способ сделать это автоматически, когда в таблицу вставляется новая запись?

РЕДАКТИРОВАТЬ: я пробовал это в DB 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
  

Есть ли какой-либо способ сделать это?

Комментарии:

1. Вам нужно отправить еще один запрос для обновления старой строки, вы можете сделать это с помощью триггера, если вы не хотите, чтобы это был прикладной уровень.

2. Вы можете установить для нее текущую временную метку, поэтому всякий раз, когда будет вставлена новая запись, она будет содержать текущую дату, а позже вы сможете изменить ее с помощью желаемого ввода.

3. либо временная метка currunt, либо создайте триггер.

4. Вы хотите обновить старую версию при создании новой версии? Если это так, то триггеры — это (возможно, единственный) вариант.

5. Я читал, что невозможно обновить старую строку с помощью триггера. Есть предложения?