您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

MySQL添加一个NOT NULL列

MySQL添加一个NOT NULL列

MysqL中,每个列类型都有一个隐式默认 ”值

对于字符串类型,[隐式]认值为空字符串。

如果将NOT NULL列添加到表中,并且未指定显式的DEFAULT,则将使用隐式认值来填充新的列数据1。指定DEFAULT值时,将应用类似的规则。

因此,原始DDL产生与以下结果相同的结果:

-- 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

“严格”模式设置会影响依赖于认值的DML语句,但不会影响添加列时的隐式用法

对于将数据输入到没有显式DEFAULT子句的NOT NULL列中,如果 INSERT或REPLACE语句不 包含该列的值,并且[如果]启用了严格sql模式,则会发生错误

这是sqlfiddle的“证明”,表明严格模式不适用于ALTER TABLE .. ADD语句。

1这是MysqL功能。其他引擎(例如sql Server)需要此类架构更改的显式DEFAULT(或NULL列)约束。

MySQL 2022/1/1 18:49:15 有462人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶