【发布时间】:2016-10-23 01:24:31
【问题描述】:
当我创建一个新表时
create table test(rId int auto_increment, createtimestamp timestamp not null, PRIMARY KEY (rId));
它创建一个具有默认模式的表
createtimestamp 为 CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP。
未设置预期行为。但它被设置为默认值:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP。为什么会这样?
我可以在创建后使用 ALTER TABLE test CHANGE COLUMN createtimestamp createtimestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ; 更改它,但不能将其更改为 ALTER TABLE test CHANGE COLUMN createtimestamp createtimestamp TIMESTAMP NOT NULL ;。
看起来必须指定默认值,但这正是我不想要的。如何在创建表后且无需任何更改的情况下实现未设置默认值且架构不为空的行为?
MySql 版本:5.5.49
【问题讨论】:
-
Automatic Initialization and Updating for TIMESTAMP: "既没有 DEFAULT CURRENT_TIMESTAMP 也没有 ON UPDATE CURRENT_TIMESTAMP,这与同时指定 DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP 相同...要禁止第一个 TIMESTAMP 列的自动属性,请执行以下任一操作以下...”