在MySQL中创建数据库表。我创建了两个字段来获取时间戳。
created_at timestamp default '0000-00-00 00:00:00',
updated_at timestamp default now() on update now(),
当我更新数据库时,两个字段都更新为当前时间戳。有关如何防止这种情况发生的任何想法?我更新时没有提供'created_at'字段 - 我还为updated_at字段提供'null'以自动更新。
答案 0 :(得分:0)
根据MySQL的版本,您应该能够在updated_at字段中使用以下内容作为默认值:
UPDATE CURRENT_TIMESTAMP上的CURRENT_TIMESTAMP
您的created_at字段应该只有CURRENT_TIMESTAMP作为默认值。
我还要将两者都设置为数据类型datetime而不是timestamp。
答案 1 :(得分:0)
时间戳初始化在mysql中可能是一个丑陋的野兽!
根据下面的提交,你有mysql v5.6.4或更早版本:
我无法在没有出现错误的情况下声明两个current_timestamps - 虽然它的默认值为0 - 它在创建时生成当前时间戳(没有我加入时间戳) - Spencer Rohan
当您插入/更新记录时,可以将单个时间戳字段初始化和/或更新为当前时间戳。在早期版本中,这必须是表中的第一个时间戳字段。
我只是将created_at
设置为可为空的列,默认值为null,因为根据timestamp initialization上的mysql文档:
换句话说,定义为允许NULL值的TIMESTAMP列仅在其定义包含DEFAULT CURRENT_TIMESTAMP
时自动初始化
通过将默认值更改为null,可以解决零日期和各种sql模式下可能遇到的任何问题。
created_at timestamp null default null,