MySQL列'not null default current_timestamp'

时间:2013-10-04 00:24:34

标签: mysql postgresql

在MySQL表中,我们不能有2列类型的时间戳,默认值是current_timestamp。

无论如何,在同一个表中有2个或更多列,默认值是当前时间。这可以在Postgres中轻松完成,使用now()。

非常感谢。

3 个答案:

答案 0 :(得分:2)

如果timestamp列定义为NOT NULL如果为其分配值NULL

,则MySQL会在列中存储当前时间戳
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 |
+------+---------------------+---------------------+

答案 1 :(得分:0)

不确定这是否可行,但可能使FieldA默认为current_timestamp,并且FieldB默认为FieldA(如果需要公式,则为FieldA + 0天)。

Create Table Tbl1 
(
    ...
    , TS1 TimeStamp Default Current_TimeStamp
    , TS2 TimeStamp Default TS1
    ...
);

答案 2 :(得分:0)

看来这个页面指的是同一个问题,这是MySQL中一个众所周知的错误 看看它是否有帮助 MySQL two column timestamp default NOW value ERROR 1067