是的,如果您要创建一个字段,请确保在创建该字段时您具有以下内容:
create table test_created_on_table(
created_on timestamp default now() on update now()
);
如果您已经有一个字段,只需取消已创建字段上的"CURRENT_TIMESTAMP" 标志。每当您在表中创建新记录时,只需使用 "NOW()" 作为值即可。
或者。
相反,删除'ON UPDATE CURRENT_TIMESTAMP' 标志并为该字段发送NOW()。这种方式实际上更有意义。
这将跟踪插入或更新行的时间。
db trigger 还有另一种方法:
添加修改时间
将修改后的时间戳添加到表中是最直接的。您只需创建TIMESTAMP类型的字段,默认情况下,当行被修改时,MySQL会自动更新该字段。
有几点需要注意:
- 虽然您可以连续拥有多个
TIMESTAMP 字段,但其中只有一个
这些可以根据当前更新时间自动更新。
- 如果您的 UPDATE 查询包含
ModifiedTime 字段的值,
将使用此值。
因此,要将修改后的时间戳字段添加到现有表中,您只需要:
ALTER TABLE my_table ADD ModifiedTime TIMESTAMP;
添加 CreatedTime
添加CreateTime 值有点复杂。
在最新版本的 MySQL 上,显然可以创建一个默认值为 CURRENT_TIMESTAMP. 的 DateTime 字段。较新版本的 MySQL 不可能有多个字段使用 CURRENT_TIMESTAMP,我们当然是为了让 ModifiedTime 工作。
因此,为了获得创建的时间戳,首先我们必须在表中添加一个 DATETIME 字段。
ALTER TABLE my_table ADD CreatedTime datetime NOT NULL;
请注意,必须将其创建为 NOT NULL 才能使下一部分工作(这是因为设置 NOT NULL 会强制自动全零默认)。
接下来,我们必须创建一个触发器,它会在我们向表中插入一个值并设置创建的时间戳时自动触发。
DELIMITER //
DROP TRIGGER IF EXISTS my_table_insert_trigger//
CREATE TRIGGER my_table_insert_trigger
BEFORE INSERT ON my_table
FOR EACH ROW
BEGIN
IF NEW.CreatedTime = '0000-00-00 00:00:00' THEN
SET NEW.CreatedTime = NOW();
END IF;
END;//
DELIMITER ;
现在,当您向表中插入一个值时,该触发器将触发,如果您没有在插入查询中提供 CreatedTime 字段,它将被设置为当前时间戳。