0

我的 mysql 表中有一个字段,它的数据类型是datetime ,默认值是CURRENT_TIMESTAMP. 我认为它只会将此值放在插入上。这在插入和更新时都发生了变化。合适吗?

我没有ON UPDATE CURRENT_TIMESTAMP,然后它也在更新该列。

我的问题是,如果我只有一个具有数据类型datetime和默认值CURRENT_TIMESTAMP的列,那么当记录更新发生时它是否会更改该列,即使ON UPDATE CURRENT_TIMESTAMP不存在?

4

2 回答 2

1

听起来好像你有:

DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

但是,您似乎想要:

DEFAULT CURRENT_TIMESTAMP

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

DESCRIBE您可以通过使用MySQL 中的函数来描述特定表的模式来检查表正在使用什么。

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

于 2013-04-17T04:51:51.893 回答
0

来自mysql 文档

使用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_TIMESTAMP和相同ON 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
);
于 2013-04-17T04:52:15.633 回答