我的表(Report_table)有以下列: ID、标题、文本、日期。
通过我的应用程序,我输入了标题和文本。 数据库会在插入时自动设置 ID,但我还想使用触发器自动插入每个报告的日期。
我有点困惑。这是我的建议,但这行不通:
DELIMITER //
CREATE TRIGGER trRDate
BEFORE INSERT ON Report_table
FOR EACH ROW
BEGIN
IF (Date IS NULL or Date = '') THEN
SET NEW.Date = CURDATE();
END IF;
END; //
DELIMITER ;
所以基本上,如果日期列为空(确实如此),那么触发器应该插入一个日期。
最佳答案
在 MySQL 中,触发器无法修改调用它的表,因此您当前的方法行不通。但是从 MySQL 5.6.5 开始,您可以为 datetime
列指定动态默认值。
您可以按如下方式更改 Report_table
表中的 Date
列:
ALTER TABLE Report_table CHANGE `Date` `Date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
这意味着如果您在插入 Report_table
期间未指定日期,则当前时间戳将用作默认时间。
另一个同样有用的选项是从您的申请中分配默认日期。
关于mysql - 如何使用触发器在 MySQL 中的空列中插入当前日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41077472/