我想在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上。知道为什么会这样吗?
答案 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