MySQL - 如何在 varchar 列上设置默认值作为 TIMESTAMP

问题描述 投票:0回答:1

我需要在 MySQL 5.7

的 varchar 列中添加当前时间戳作为默认值

这是我正在尝试的表查询

CREATE TABLE foo (
creation_time VARCHAR(100) DEFAULT CURRENT_TIMESTAMP, col1 VARCHAR(100)
)
sql mysql mysql-5.7
1个回答
0
投票

假设现有时间具有如下所示的 varchar 类型:

create table foo (creation_time varchar(30));

如果可以更改日期类型,我们可以使用:

alter table foo change column creation_time creation_time datetime default current_timestamp;

注意:

alter table
过程包括创建新表,然后复制数据,最后销毁原表。所以应该在下班时间进行。

但是,如果数据类型无法更改。然后我们必须使用触发器来完成时间戳初始化工作。

delimiter //
create trigger timestamp_init before insert on foo for each row
begin
set new.creation_time=current_timestamp();
end//

delimiter ;

现在,每次插入新行时,

insert
触发器都会自动将 varchar 列的值设置为当前日期时间。

insert foo (creation_time) values(default);
 
© www.soinside.com 2019 - 2024. All rights reserved.