我创建了一个表,用于存储带有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
有什么办法吗?