MySQL(Workbench?)改变了我的脚本

时间:2017-06-13 13:51:18

标签: mysql mysql-workbench

我使用此脚本使用MySQL Workbench

在我的MySQL数据库中创建一个表
CREATE TABLE `schema`.`Foo` (
  [..],
  `CreationDate` TIMESTAMP NOT NULL,
  `LastUpdateDate` TIMESTAMP NOT NULL,
  [..]
);

问题在于,在每次提交(包括UPDATE语句)时,受影响行的列CreationDate都会被修改。

使用MySQL Workbench,我对该表进行反向工程并获得以下创建脚本:

CREATE TABLE `Foo` (
  [..],
  `CreationDate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `LastUpdateDate` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  [..]
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

f ***是什么?

服务器中的哪种配置可以通过这种方式改变我的脚本?如何在没有这些约束的情况下创建表格?

我正在使用MySQL Workbench 6.3.8 Build 1228 CE (64 bits) Community,服务器是5.5.55.0+deb,在Debian上运行。

1 个答案:

答案 0 :(得分:0)

如果您没有指定默认值,MySQL将为您选择一个。

https://dev.mysql.com/doc/refman/5.7/en/data-type-defaults.html

特别是,你已经击中了这些(强调我的):

  

对于TIMESTAMP以外的日期和时间类型,默认值是该类型的相应“零”值。 如果TIMESTAMP变量已启用,explicit_defaults_for_timestamp system 也是如此(请参见第5.1.5节“服务器系统变量”)。否则,表示表中的第一个TIMESTAMP列,默认值为当前日期和时间。请参见第11.3节“日期和时间类型”。