2017-01-04 2 views
2

Я хотел бы добавить ограничение на таблицу mySQL для значения по умолчанию столбца datetime, как и here, но команда, решающая проблему, просто не работает для меня.Ошибка синтаксиса DEFAULT

Я создал таблицу:

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): У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «DEFAULT GETDATE() FOR timeTransactions» по строке 1

Я попытался определить ограничение во время создания таблицы, но я все еще застрял на ПО УМОЛЧАНИЮ. Любая идея, почему это происходит?

+2

Не используйте синтаксис SQL Server для MySQL –

+0

В MySQL вы используете 'DEFAULT CURRENT_TIMESTAMP'. – Barmar

ответ

0

Невозможно использовать функцию GETDATE() в качестве значения по умолчанию.

С TIMESTAMP и DATETIME столбцов, можно указать DEFAULT CURRENT_TIMESTAMP, либо как часть CREATE TABLE, или с помощью TABLE ALTER для изменения определения столбца

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