mysql - 如何自动更新 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
有没有办法做到这一点?
解决方案
推荐阅读
- c++ - coc-clangd 与 gtkmm-4.0 存在问题
- jquery - 将样式单元格从数据库添加到 DataTable
- php - Laravel Lumen Logging 给出了一个外观根尚未设置
- javascript - 具有功能 deleteItem 的 Google 电子表格
- gstreamer - 使用 gstreamer tee 元素,前贴片未完成
- java - 0auth_signature 在 java 中使用 SHA1-RSA
- c++ - 为什么在这个例子中委托中有 Qt::UserRole?
- c++ - 解除绑定后无法绑定套接字
- python - 使用 BeautifulSoup 解析 HTML,select()
- django - 验证没有值