MySQL在插入时的DATETIME字段中设置当前日期

Wil*_*iam 19 mysql triggers

我有一个'created_date'DATETIME字段,我希望在插入时填充当前日期.我应该使用什么语法来触发此操作?这是我到目前为止,但它是不正确的.

CREATE TRIGGER set_created_date
BEFORE INSERT ON product
FOR EACH ROW BEGIN
SET NEW.created_date = now();
Run Code Online (Sandbox Code Playgroud)

pev*_*vik 35

DELIMITER ;;
CREATE TRIGGER `my_table_bi` BEFORE INSERT ON `my_table` FOR EACH ROW
BEGIN
    SET NEW.created_date = NOW();
END;;
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)


dun*_*289 18

您最好的选择是将该列更改为时间戳.MySQL将自动使用连续的第一个时间戳作为"最后修改"值并为您更新.如果您只想节省创建时间,这是可配置的.

请参阅doc http://dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html

  • 最新版本的mysql不支持多个时间戳,因此我们可以有一个时间戳和多个触发器. (2认同)

Cor*_*eus 16

从MySQL 5.6.X开始,您可以这样做:

ALTER TABLE `schema`.`users` 
CHANGE COLUMN `created` `created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ;
Run Code Online (Sandbox Code Playgroud)

这样,当插入或更新新行时,您的列将使用当前时间戳进行更新.

如果你正在使用MySQL Workbench,你可以放入CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMPDEFAULT值字段,如下所示:

在此输入图像描述

http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-5.html