0

mysql テーブルにフィールドがあり、そのデータ型はdatetime で、デフォルト値は でしたCURRENT_TIMESTAMP。この値は挿入時にのみ配置されると思いました。これは、挿入と更新の両方で変更されていました。適切ですか?

持っていないのでON UPDATE CURRENT_TIMESTAMP、その列も更新しています。

私の質問は、データ型datetimeとデフォルトの列があるだけCURRENT_TIMESTAMPで、レコードの更新が発生したときに列が変更されON UPDATE CURRENT_TIMESTAMPますか?

4

2 に答える 2

1

あなたが持っているかのように聞こえます:

DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

ただし、あなたが望んでいるようです:

DEFAULT CURRENT_TIMESTAMP

これら 2 つの違いは、1 つ目は挿入と更新の両方でタイムスタンプ列を更新し、2 つ目は挿入時に TIMESTAMP のみを提供し、行の更新時に更新しないことです。

DESCRIBEMySQL 内の関数を使用して特定のテーブルのスキーマを記述することにより、テーブルが使用しているものを確認できます。

http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html

于 2013-04-17T04:51:51.893 に答える
0

mysqlドキュメントから

と の両方を使用するDEFAULT CURRENT_TIMESTAMPON UPDATE CURRENT_TIMESTAMP、列にはデフォルト値の現在のタイムスタンプがあり、現在のタイムスタンプに自動的に更新されます。

CREATE TABLE t1 (
  ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

どちらDEFAULT CURRENT_TIMESTAMPでもない場合は、 と の両方をON UPDATE CURRENT_TIMESTAMP指定するのと同じです。DEFAULT CURRENT_TIMESTAMPON UPDATE CURRENT_TIMESTAMP

CREATE TABLE t1 (
  ts TIMESTAMP
);

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

デフォルトは、DEFAULT句が指定するCURRENT_TIMESTAMPか定数値を指定するかによって異なります。ではCURRENT_TIMESTAMP、デフォルトは現在のタイムスタンプです。

CREATE TABLE t1 (
  ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
于 2013-04-17T04:52:15.633 に答える