我需要触发器在我的表中的每个插入上添加当前日期(只有日期而不是时间)。
CREATE TRIGGER set_created_date
BEFORE INSERT ON people
FOR EACH ROW BEGIN
SET NEW.created_date = date();
END;
这是我的代码。我做错了什么?谢谢
最佳答案
您可以使用以下解决方案:
USE db_name; -- or select the database with script / tool
DELIMITER |
CREATE TRIGGER set_created_date BEFORE INSERT ON people
FOR EACH ROW
BEGIN
SET NEW.created_date = CURDATE();
END;
|
DELIMITER ;
注释/解释:
如果您在 created_date
列上使用 DEFAULT
值,则只有在 上没有为该列提供值时,才会将默认值设置为该列插入
。因此,如果有人像下面这样运行 INSERT
命令:
INSERT INTO people (name, created_date) VALUES ('John Doe', '2017-02-03');
默认值(当前日期)未设置到该列。相反,可用值将设置为列 (2017-02-03
)。
TRIGGER
在每个 INSERT
上设置当前日期。如果有人执行上述 INSERT
命令,当前日期仍将设置为 created_date
列(不是 INSERT
命令中提供的值)。
关于mysql - 如何添加mysql触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51714369/