FC2ブログ
2008
08.15

timestamp の default 制限

Category: mysql   Tags:mysqlsql
必死に下のような sql を書いていたのですが、

create table test (
date1 timestamp not null default CURRENT_TIMESTAMP,
date2 timestamp not null on update CURRENT_TIMESTAMP default CURRENT_TIMESTAMP
)



ERROR 1293 (HY000): Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause



のようなエラーが。

1つのカラムにしか DEFAULT CURRENT_TIMESTAMP を指定できないんですね…。
詳しくは↓を。

10.3.1.1. TIMESTAMP MySQL 4.1での性質

テーブル内の1つの TIMESTAMP カラムに対して、現在のタイムスタンプをデフォルト値と自動更新値として指定する事ができます。現在のタイムスタンプを、カラムを初期化するデフォルト値にする事、または自動更新のデフォルト値にする事、またはその両方にする事が可能です。現在のタイムスタンプを、1つのカラムを初期化するデフォルト値にし、別のカラムの自動更新のデフォルト値にする事は不可能です。



うーむ、なんということだ。

2つのカラムで DEFAULT 値を使いたいことはあると思うのだけどなぁ。

こういう場合は、素直にプログラム側で now() をデフォルトで渡すようにしておくのがいいのかな?

どうしてこのような仕様になっているのでしょう?
他の RDB はどうなんだろう?


スポンサーサイト




トラックバックURL
http://noriko3.blog42.fc2.com/tb.php/27-e3fbcd25
トラックバック
コメント
管理者にだけ表示を許可する
 
back-to-top