2

In a MySQL table, we can't have 2 columns type timestamp with default values is current_timestamp.

SO is there anyway to have 2 or more columns in a same table with default value is current time. This can be done easily in Postgres, with now().

Many thanks.

4

3 回答 3

2

如果时间戳列被定义为NOT NULLMySQL 将当前时间戳存储在列中,如果您为其分配值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

不确定这是否可行,但可能使 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 回答
0

似乎这个页面指的是同一个问题,这是 MySQL 中的一个众所周知的错误,看看它是否有助于 MySQL 两列时间戳默认 NOW 值 ERROR 1067

于 2013-10-04T00:38:33.013 回答