DEFAULT语法错误

时间:2017-01-04 19:20:27

标签: mysql

我想在mySQL表上添加一个约束来获取datetime列的默认值,就像here一样,但解决问题的命令对我来说并不起作用。

我创建了我的表:

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上返回语法错误:

错误1064(42000):您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以便在timeTransactions' DEFAULT GETDATE()附近使用正确的语法。在第1行

我尝试在创建表时定义约束但是我仍然卡在DEFAULT上。知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

无法将GETDATE()函数用作默认值。

使用TIMESTAMP和DATETIME列,您可以指定DEFAULT CURRENT_TIMESTAMP,作为CREATE TABLE的一部分,或使用ALTER TABLE来修改列定义

ALTER TABLE `transactions`
  CHANGE `timeTransaction` `timeTransaction` DATETIME DEFAULT CURRENT_TIMESTAMP ;

您还可以使用CURRENT_TIMESTAMP的有效同义词之一。 (并且GETDATE()不是有效的同义词之一。)

在MySQL 5.6.x之前,只有TIMESTAMP列可以具有DEFAULT CURRENT_TIMESTAMP。使用MySQL 5.6,对它的支持扩展到DATETIME数据类型。

有关您正在运行的MySQL版本,请参阅MySQL参考手册。

http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html