2

MySQL テーブルでは、デフォルト値が current_timestamp であるタイムスタンプ型の 2 つの列を持つことはできません。

とにかく、デフォルト値が現在の時間である同じテーブルに2つ以上の列を持つことはあります。これは Postgres で now() を使用して簡単に実行できます。

どうもありがとう。

4

3 に答える 3

2

タイムスタンプ列が 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 |
+------+---------------------+---------------------+
于 2013-10-04T00:46:46.957 に答える
0

このページは同じ問題を参照しているようで、これは MySQL のよく知られたバグです 。MySQL 2 列のタイムスタンプのデフォルトの NOW 値 ERROR 1067に役立つかどうかを確認してください。

于 2013-10-04T00:38:33.013 に答える
0

これが機能するかどうかはわかりませんが、FieldA のデフォルトを current_timestamp にし、FieldB のデフォルトを FieldA (または数式が必要な場合は FieldA + 0 日) にすることもできます。

Create Table Tbl1 
(
    ...
    , TS1 TimeStamp Default Current_TimeStamp
    , TS2 TimeStamp Default TS1
    ...
);
于 2013-10-04T00:29:26.840 に答える