60

更新ごとにtimestampデフォルトcurrent_timestampで更新されるタイプの列を持つテーブルがあります。current_timestamp

この列の「更新時」機能を削除したいと考えています。変更ステートメントはどのように記述すればよいですか?

私は次のことを試しました:

ALTER TABLE mytable alter column time  set DEFAULT now();

しかし、これはうまくいきませんでした。

4

2 に答える 2

92

Pete はほぼ正しかったのですが、'change' に対して間違った構文を使用していました。

ALTER TABLE mytable CHANGE `time` `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

列名を繰り返す必要があることに注意してください。また、単一引用符の代わりに逆引用符を使用して列名の時間をエスケープしていることを確認してください。これにより、時間の mysql 列タイプとして解釈されなくなります。

CURRENT_TIMESTAMP の DEFAULT を指定すると、MySQL は列を自動的に更新しなくなります。MySQLマニュアルから:

DEFAULT CURRENT_TIMESTAMP 句があり、ON UPDATE 句がない場合、列にはデフォルト値の現在のタイムスタンプがありますが、自動的に更新されません。

于 2009-11-20T14:28:35.130 に答える
12

私の知る限り、デフォルトとして NOW() などの関数を使用することはできません。

試す

ALTER TABLE `mytable` CHANGE `time` `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

(フィールド名のエスケープと 2 番目の使用を追加するために編集)

于 2009-11-20T12:58:00.000 に答える