时间戳没有更新更改

时间:2011-11-15 05:04:32

标签: mysql

在mysql中,我有timestamp,字段名称为added_on。我创建了一个crm的潜在客户表。但每当我更新潜在客户时它都会更新。我只希望时间戳只显示增加的时间。我不希望每当我更新或改变领导时都会更新。

注意:在创建时间戳字段时,我将默认值设为时间戳,并在创建字段后在extras字段中显示ON UPDATE CURRENT_TIMESTAMP

每当我更新行时,是否有任何停止更新时间戳的想法?

4 个答案:

答案 0 :(得分:14)

问题是ON UPDATE CURRENT_TIMESTAMP。您能够使用这样的alter语句撤消此行为(不确定您的表名是什么):

ALTER TABLE leads MODIFY added_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

答案 1 :(得分:4)

如果您想控制时间戳,只需将其更改为DATETIME,然后在您想要added_on=NOW()时自行更新

这是我为避免复杂化所做的工作,然后您可以确定您可以完全控制它,这对于在表之间存档或移动数据也很有用,因为在这种情况下您不希望时间戳更新自身

答案 2 :(得分:2)

您在列中添加了ON UPDATE条件!! 要删除它,请将列重新定义为

ALTER TABLE `mytable` MODIFY `added_on` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;

这将有效消除ON UPDATE条件。

答案 3 :(得分:1)

表的第一个TIMESTAMP,默认情况下为ON UPDATE CURRENT_TIMESTAMP。为了防止这种情况(而不是之后改变表格),请参阅MySQL文档here

  

TIMESTAMP和DATETIME列没有自动属性,除非   它们是显式指定的,但有以下例外:默认情况下,   第一个TIMESTAMP列同时具有DEFAULT CURRENT_TIMESTAMP和ON   如果两者都没有明确指定,则更新CURRENT_TIMESTAMP。至   抑制第一个TIMESTAMP列的自动属性,使用一个   这些策略:

     

1)启用explicit_defaults_for_timestamp系统变量。如果这   变量已启用,DEFAULT CURRENT_TIMESTAMP和ON UPDATE   CURRENT_TIMESTAMP子句指定自动初始化和   更新可用,但未分配给任何TIMESTAMP列   除非明确包含在列定义中。

     

2)或者,如果禁用explicit_defaults_for_timestamp(   默认),执行以下任一操作:

     

2a)使用指定常量的DEFAULT子句定义列   默认值。

     

2b)指定NULL属性。这也会导致列允许NULL   值,表示您无法分配当前时间戳   将列设置为NULL。分配NULL会将列设置为NULL。

相关问题