2009-05-09 8 views
3

私はMySqlの最新バージョンを使用していますが、curetime()またはnow()またはcurrent_timestampをdatetime列のデフォルト値(created_at、updated_at)として使用するように表を変更しようとしました。 3つのすべてについて、変更は失敗し、無効なデフォルト値であると言っています。日時フィールドで現在の時刻を生成するための適切なデフォルト値は何ですか?私はcurtime()、now()とcurrent_timestampがMySqlの有効なデフォルトのdatetime値だと思いましたか?

ALTER TABLE `music_library_development`.`albums` 
MODIFY COLUMN `created_at` DATETIME NOT NULL DEFAULT current_timestamp, 
MODIFY COLUMN `updated_at` DATETIME NOT NULL DEFAULT current_timestamp; 

ALTER TABLE `music_library_development`.`albums` 
MODIFY COLUMN `created_at` DATETIME NOT NULL DEFAULT now(), 
MODIFY COLUMN `updated_at` DATETIME NOT NULL DEFAULT now(); 

ALTER TABLE `music_library_development`.`albums` 
MODIFY COLUMN `created_at` DATETIME NOT NULL DEFAULT curtime(), 
MODIFY COLUMN `updated_at` DATETIME NOT NULL DEFAULT curtime(); 

答えて

1

TIMESTAMPカラムタイプ使用してみてください:

MODIFY COLUMN `updated_at` TIMESTAMP NOT NULL DEFAULT current_timestamp; 
+0

ON TIMESTAMPのDEFAULT CURRENT_TIMESTAMPのupdated_atのupdated_atの変更music_library_development。デフォルト値が設定されているタイムスタンプ列は1つしかありません。 –

+0

はい、複数の列を自動更新することはできません。これは別の質問で対処されましたが、私はそれを見つけることができません。 –

+0

しかし、ほとんどの監査レコードにはレコード作成時に値が設定されたcreated_atフィールドとupdated_atフィールドがあるため、これは行われません – Prasad

0

ALTER TABLEがUPDATE CURRENT_TIMESTAMP ONのcreated_atのcreated_atタイムスタンプのデフォルトCURRENT_TIMESTAMPを変更music_library_developmentします。

ALTER TABLEは、私はちょうどそれを試してみましたUPDATE CURRENT_TIMESTAMP

関連する問題