我有一个'DATETIME'字段,名为"created_date", 我希望在插入时自动填充当前日期。我应该使用什么语法来创建触发器?这是我目前的代码,但它是错误的。
CREATE TRIGGER set_created_date
BEFORE INSERT ON product
FOR EACH ROW BEGIN
SET NEW.created_date = now();
DELIMITER ;;
CREATE TRIGGER `my_table_bi` BEFORE INSERT ON `my_table` FOR EACH ROW
BEGIN
SET NEW.created_date = NOW();
END;;
DELIMITER ;
自从MySQL 5.6.X版本以后,你可以这样做:
ALTER TABLE `schema`.`users`
CHANGE COLUMN `created` `created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ;
这样,当插入或更新新行时,您的列将使用当前时间戳进行更新。
如果您正在使用MySQL Workbench,则可以在默认值字段中放置CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
:
http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-5.html
ON UPDATE
子句意味着每次更新任何字段时都会更新它,这显然不是你想要的“创建”字段,而是“最后修改”字段。但除此之外... - mike rodent
SET NEW.created_date = NOW(), NEW.last_visited = NOW();
- Zei