MySQL テーブルでは、デフォルト値が current_timestamp であるタイムスタンプ型の 2 つの列を持つことはできません。
とにかく、デフォルト値が現在の時間である同じテーブルに2つ以上の列を持つことはあります。これは Postgres で now() を使用して簡単に実行できます。
どうもありがとう。
MySQL テーブルでは、デフォルト値が current_timestamp であるタイムスタンプ型の 2 つの列を持つことはできません。
とにかく、デフォルト値が現在の時間である同じテーブルに2つ以上の列を持つことはあります。これは Postgres で now() を使用して簡単に実行できます。
どうもありがとう。
タイムスタンプ列が MySQL として定義されているNOT NULL
場合は、現在のタイムスタンプを列に格納します。NULL
CREATE TABLE `t1` (
`name` varchar(100) DEFAULT NULL,
`created` timestamp NOT NULL DEFAULT 0,
`updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
INSERT INTO `t1` SET name='abc', created=null;
mysql> select * from t1;
+------+---------------------+---------------------+
| name | created | updated |
+------+---------------------+---------------------+
| abc | 2013-10-04 10:48:03 | 2013-10-04 10:48:03 |
+------+---------------------+---------------------+
UPDATE `t1` SET name='abc2' WHERE name = 'abc';
mysql> select * from t1;
+------+---------------------+---------------------+
| name | created | updated |
+------+---------------------+---------------------+
| abc2 | 2013-10-04 10:48:03 | 2013-10-04 11:42:04 |
+------+---------------------+---------------------+
このページは同じ問題を参照しているようで、これは MySQL のよく知られたバグです 。MySQL 2 列のタイムスタンプのデフォルトの NOW 値 ERROR 1067に役立つかどうかを確認してください。
これが機能するかどうかはわかりませんが、FieldA のデフォルトを current_timestamp にし、FieldB のデフォルトを FieldA (または数式が必要な場合は FieldA + 0 日) にすることもできます。
Create Table Tbl1
(
...
, TS1 TimeStamp Default Current_TimeStamp
, TS2 TimeStamp Default TS1
...
);