mysql中的datetime数据类型

时间:2013-04-17 04:42:05

标签: mysql datetime

我的mysql表中有一个字段,其数据类型为datetime,默认值为CURRENT_TIMESTAMP。我以为它会将此值仅用于插入。这在插入和更新上都发生了变化。这是对的吗?

我没有ON UPDATE CURRENT_TIMESTAMP,也没有更新该列。

我的问题是,如果我只有一个数据类型为datetime的列,默认为CURRENT_TIMESTAMP,即使ON UPDATE CURRENT_TIMESTAMP不存在,它会在记录更新时更改列吗?< / p>

2 个答案:

答案 0 :(得分:1)

听起来好像你有:

DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

然而,似乎你想要:

DEFAULT CURRENT_TIMESTAMP

这两者之间的区别在于,第一个将更新插入和更新的时间戳列,第二个将仅在插入期间提供TIMESTAMP,并且在更新行时 NOT 更新

您可以使用MySQL中的DESCRIBE函数来检查您的表正在使用的内容,以描述特定表的架构。

http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html

答案 1 :(得分:0)

来自mysql doc

同时使用DEFAULT CURRENT_TIMESTAMPON UPDATE CURRENT_TIMESTAMP,该列的当前时间戳为其默认值,并自动更新为当前时间戳。

CREATE TABLE t1 (
  ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

既不是DEFAULT CURRENT_TIMESTAMP也不是ON UPDATE CURRENT_TIMESTAMP,它与指定DEFAULT CURRENT_TIMESTAMPON UPDATE CURRENT_TIMESTAMP相同。

CREATE TABLE t1 (
  ts TIMESTAMP
);

使用DEFAULT子句但没有ON UPDATE CURRENT_TIMESTAMP子句,该列具有给定的默认值,并且不会自动更新为当前时间戳。

默认值取决于DEFAULT子句是指定CURRENT_TIMESTAMP还是常量值。使用CURRENT_TIMESTAMP时,默认值为当前时间戳。

CREATE TABLE t1 (
  ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);