【问题标题】:How to insert the current date for a empty column in MySQL using a trigger?如何使用触发器在 MySQL 中为空列插入当前日期?
【发布时间】:2016-12-10 16:07:22
【问题描述】:

我的表 (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 ;

所以基本上如果 Date 列是空的(确实如此),那么触发器应该插入一个日期。

【问题讨论】:

    标签: mysql date if-statement triggers insert


    【解决方案1】:

    在 MySQL 中,触发器无法修改调用它的表,因此您当前的方法将不起作用。但从 MySQL 5.6.5 开始,您可以为 datetime 列指定动态默认值。

    您可以按如下方式更改Report_table 表中的Date 列:

    ALTER TABLE Report_table CHANGE `Date` `Date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
    

    这意味着,如果您在插入 Report_table 期间未指定日期,则默认使用当前时间戳。

    另一个同样有用的选项是从您的应用程序中分配默认日期。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-11
      • 2013-11-23
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      • 1970-01-01
      相关资源
      最近更新 更多