8

私は次のようなことを考えていました:

`post_modified` int(11) NOT NULL DEFAULT UNIX_TIMESTAMP (NOW ()) ON UPDATE UNIX_TIMESTAMP (NOW ()),

しかし、このコードは機能していません。

4

2 に答える 2

6

いいえ、あなたが示したように使用することはできません。

MySqlの Data Type doc から:

「デフォルト値は定数でなければなりません。関数または式にすることはできません。これは、たとえば、日付列のデフォルトを NOW() や CURRENT_DATE などの関数の値に設定できないことを意味します。例外は、CURRENT_TIMESTAMP を TIMESTAMP 列のデフォルトとして指定できることです。"

回避策については、以下の回答を参照してください。

MySQL で UNIX_TIMESTAMP デフォルトの列を作成することは可能ですか?

これが役立つことを願っています!

于 2012-10-29T15:49:38.073 に答える
6

注: MYSQL TRIGGERのパフォーマンスについてはわかりません

これらのリンクにアクセスしてください

  1. SQL Server トリガーを実装することの欠点のいくつかを特定する

  2. トリガーの使用

このためのトリガーを作成できます。

挿入用

CREATE TRIGGER {trigger_name} BEFORE INSERT ON {table_name} FOR EACH ROW SET new.{field_name} = UNIX_TIMESTAMP(NOW());

アップデート用

CREATE TRIGGER {trigger_name} BEFORE UPDATE ON {table_name} FOR EACH ROW SET new.{field_name} = UNIX_TIMESTAMP(NOW());

于 2014-01-12T12:45:04.780 に答える