2017-01-04 11 views
2

hereのように、datetime列のデフォルト値の制約をmySQLテーブルに追加したいのですが、この問題を解決するコマンドは私のためには機能しません。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; 

をしようとすると、それは常にデフォルトの構文エラーを返す:

ERROR 1064(42000):あなたは持っているがあなたのSQL構文のエラー。あなたのMySQLサーバーのバージョンに対応するマニュアルをチェックして、正しい構文が1行目の「DEFAULT GETDATE()FOR timeTransactions」の近くで使用するようにしてください。

テーブルの作成中に制約を定義しようとしましたが、デフォルト。なぜこれが起こっているのか?

+2

あなたが 'DEFAULTのCURRENT_TIMESTAMP'を使用するMySQLではMySQLの –

+0

のためのSQL Serverの構文を使用しないでください。 – Barmar

答えて

0

GETDATE()機能をデフォルト値として使用することはできません。 TIMESTAMPとDATETIMEカラムで

は、列の定義あなたはまた、のいずれかを使用することができます

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

を変更するには、CREATE TABLEの一部として、またはALTER TABLEでいずれか、DEFAULT CURRENT_TIMESTAMPを指定することができますCURRENT_TIMESTAMPの有効な同義語。 GETDATE()は有効な同義語の1つではありません。

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