更改列:null为非null

北战南征 提交于 2019-12-11 13:37:24

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

我有一个表有几个可以为空的整数列。 由于多种原因,这是不可取的,因此我希望将所有空值更新为0,然后将这些列设置为NOT NULL 。 除了将空值更改为0 ,还必须保留数据。

我正在寻找特定的SQL语法来将列(称为ColumnA )更改为“ not null ”。 假设数据已更新为不包含空值。

使用SQL Server 2000


#1楼

这对我有用:

ALTER TABLE [Table] 
Alter COLUMN [Column] VARCHAR(50) not null;

#2楼

我有同样的问题,但该字段用于默认为null,现在我想将其默认为0.这需要在mdb的解决方案后再添加一行:

ALTER TABLE [Table] ADD CONSTRAINT [Constraint] DEFAULT 0 FOR [Column];

#3楼

对于Oracle 11g,我能够更改列属性,如下所示:

ALTER TABLE tablename MODIFY columnname datatype NOT NULL;

否则abatichev的回答似乎很好。 你不能重复改变 - 它抱怨(至少在SQL Developer中)该列已经不是null。


#4楼

对于JDK中包含的内置javaDB(Oracle支持的Apache Derby发行版),下面对我有用

alter table [table name] alter column [column name] not null;

#5楼

如果是FOREIGN KEY CONSTRAINT ...如果主键表的列中不存在“0”,则会出现问题。 解决方案是......

步骤1:

使用此代码禁用所有约束:

EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"

第2步:

RUN UPDATE COMMAND (as mentioned in above comments)
RUN ALTER COMMAND (as mentioned in above comments)

STEP3:

使用以下代码启用所有约束:

exec sp_msforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!