我使用此脚本使用MySQL Workbench
:
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上运行。
答案 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节“日期和时间类型”。