MySQL 可以自动将每个表中的单个 类型列初始化和/或更新为TIMESTAMP
当前时间。如自动初始化和更新中所述:INSERT
UPDATE
TIMESTAMP
表中的一TIMESTAMP
列可以将当前时间戳作为初始化该列的默认值,作为自动更新值,或两者兼而有之。不可能将当前时间戳设为一列的默认值,而将另一列的自动更新值设为默认值。
在您的情况下,因为您希望单独的列来保存记录的初始化和更新时间,所以您需要明确设置这些列中的一个(或两个);可以使用以下函数将日期/时间列显式设置为 SQL 中的当前日期/时间NOW()
:
INSERT INTO my_table (created) VALUES (NOW());
UPDATE my_table SET updated = NOW();
甚至可以使用触发器来实现 MySQL 本身不提供的自动行为:
CREATE TRIGGER set_init_time AFTER INSERT ON my_table FOR EACH ROW
SET NEW.created = NOW();
CREATE TRIGGER set_updt_time AFTER UPDATE ON my_table FOR EACH ROW
SET NEW.updated = NOW();