我正在给一个表添加一列:
ALTER TABLE t ADD c varchar(10) NOT NULL;
新增了该列,每条记录都是空字符串。
在MySQL 5.5+的所有条件下(严格模式等),这种方式是否能正常工作?
我正在给一个表添加一列:
ALTER TABLE t ADD c varchar(10) NOT NULL;
新增了该列,每条记录都是空字符串。
在MySQL 5.5+的所有条件下(严格模式等),这种方式是否能正常工作?
-- After this, data will be the same, but schema has an EXPLICIT DEFAULT
ALTER TABLE t ADD c varchar(10) NOT NULL DEFAULT ''
-- Now we're back to the IMPLICIT DEFAULT (MySQL stores NULL internally)
ALTER TABLE t ALTER c DROP DEFAULT
1这是MySQL的一个特性。其他引擎,如SQL Server,在进行此类模式更改时需要显式设置DEFAULT(或NULL列)约束。
INSERT INTO t SET c = NULL
的情况 - 但是如果该列上有 NOT NULL,那么这个语句将失败。 - aland