首页 > 解决方案 > 如何自动更新 DATE 变量?

问题描述

我创建了一个用于存储软件版本(这是一个示例)的表,其中包含 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

有没有办法做到这一点?

标签: mysqldatetime

解决方案


推荐阅读