5

我在 mariadb 5.5 中设置了默认的日期时间,例如

CREATE TABLE IF NOT EXISTS test (
    `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);

但它显示此错误

Error 1067: Invalid default value for 'create_time'

如何在 mariadb 中设置默认当前时间值但不使用 TIMESTAMP 类型?

4

2 回答 2

2

在 5.5 中,您不能将CURRENT_TIMESTAMP其用作DATETIME列的默认值。这后来在 10.0.1 中引入,以使其使用成为可能。

您的选择是升级到较新的版本或使用触发器模拟它(正如inanutshellus所解释的那样)。

于 2018-06-21T04:37:33.703 回答
1

使用触发器指定它:

create trigger bi_mytable
before insert on mytable 
for each row 
begin
    NEW.create_time = NOW();
end;

而且,由于它是一个“创造”价值,请确保没有人更新它:

create trigger bu_mytable
before update on mytable 
for each row 
begin
    NEW.create_time = OLD.create_time;
end;
于 2018-06-21T03:43:58.067 回答