我在 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 类型?
在 5.5 中,您不能将CURRENT_TIMESTAMP
其用作DATETIME
列的默认值。这后来在 10.0.1 中引入,以使其使用成为可能。
您的选择是升级到较新的版本或使用触发器模拟它(正如inanutshellus所解释的那样)。
使用触发器指定它:
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;