如何在 MySQL 中将默认 Null 更改为 NOT NULL
Posted
技术标签:
【中文标题】如何在 MySQL 中将默认 Null 更改为 NOT NULL【英文标题】:How to Change Default Null to NOT NULL in MySQL 【发布时间】:2017-07-13 12:30:47 【问题描述】:我在表 room
中有以下列现在我想将列 property_id
的定义从 NULL 更改为 NOT NULL 我该怎么做
以下查询不起作用
ALTER TABLE `room` CHANGE `property_id` `property_id` bigint(20) NOT NULL;
Column的实际定义是:
`property_id` bigint(20) DEFAULT NULL,
【问题讨论】:
在更改表定义之前是否有任何行包含NULL
?
是的,我应该删除那些行吗?
在更改列条件之前是的
@SFAH 您本身不需要删除它们。但是当您更改列定义时,它们不能是NULL
。您需要如何处理数据取决于您的数据以及您如何使用它。
@SFAH,那么你不能这样做,你必须先处理那些NULL
,否则如果会与列属性冲突
【参考方案1】:
在 mysql 中你可以做到这一点,
ALTER TABLE room MODIFY property_id bigint(20) not null;
【讨论】:
在其他 dbms 中,例如 oracle,它不允许您更改非空列,但是当您更改列时,mysql 会自动为您转换内容 @SFAH,但是您在查询中保留了两个“property_id”。检查一次。【参考方案2】:我的查询非常好,唯一的错误是有些行包含空记录,所以它为什么会产生问题
【讨论】:
以上是关于如何在 MySQL 中将默认 Null 更改为 NOT NULL的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Qt Creator 中将默认的预选应用程序类型从普通 C 应用程序永久更改为普通 C++ 应用程序?
如何在 MySQL 中将 mediumtext 列更改为 varchar? (换表)
如何在 Rails 中将我的数据库从 SQLite 更改为 MYSQL
如何在TheSchwartz中将数据库从MySQL更改为Oracle
如何在 Windows 10 中将 Jupyter Notebook 的默认浏览器更改为 Microsoft Edge?