mariadb中日期时间的默认值

时间:2013-10-18 13:49:57

标签: mysql mariadb

我在mariadb 5.5中设置了datetime的默认值,例如

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

但它显示此错误

Error 1067: Invalid default value for 'create_time'

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

3 个答案:

答案 0 :(得分:0)

使用触发器指定它:

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;

答案 1 :(得分:0)

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

您的选择是升级到较新版本,还是使用触发器(as was explained by inanutshellus)进行仿真。

答案 2 :(得分:-3)

我认为最适合您的解决方案:如果您需要稳定性,请使用MySQL 5.6,否则请使用MariaDB 10。