DEFAULT 语法错误

32 浏览
0 Comments

DEFAULT 语法错误

我想在一个mySQL表的datetime列的默认值上添加约束,就像这里一样,但是解决该问题的命令对我不起作用。

我使用以下命令创建了我的表:

create table `transactions`
      ( `id` int NOT NULL AUTO_INCREMENT, 
        `timeTransaction` DATETIME, 
        `montant` int, 
        `donneur` varchar(50), 
        `receveur` varchar(200), 
        primary key(`id`));

当我尝试执行以下命令时:

ALTER TABLE transactions ADD CONSTRAINT DF_TIME_TRANS DEFAULT GETDATE() FOR timeTransactions;

它总是返回一个关于DEFAULT的语法错误:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DEFAULT GETDATE() FOR timeTransactions' at line 1

我尝试在创建表时定义约束,但仍然卡在DEFAULT上。有什么想法为什么会这样?

0
0 Comments

问题出现的原因是无法将GETDATE()函数用作默认值。对于TIMESTAMP和DATETIME列,可以在CREATE TABLE时指定DEFAULT CURRENT_TIMESTAMP,或者使用ALTER TABLE修改列定义时指定。

解决方法是使用有效的CURRENT_TIMESTAMP的同义词之一(GETDATE()不是有效的同义词)。在MySQL 5.6.x之前,只有TIMESTAMP列可以设置DEFAULT CURRENT_TIMESTAMP。但是在MySQL 5.6中,对DATETIME数据类型也进行了扩展支持。

您可以参考您正在使用的MySQL版本的MySQL参考手册。

0