Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在DB2iSeries中的现有列中添加NOTNULL约束?_Sql_Db2_Db2 400_Iseries Navigator - Fatal编程技术网

Sql 如何在DB2iSeries中的现有列中添加NOTNULL约束?

Sql 如何在DB2iSeries中的现有列中添加NOTNULL约束?,sql,db2,db2-400,iseries-navigator,Sql,Db2,Db2 400,Iseries Navigator,我已尝试使用以下脚本向我的列添加NOTNULL约束 ALTER TABLE MYDB.RULES ALTER TYPEID SET NOT NULL; ALTER TABLE MYDB.RULES ALTER COLUMN TYPEID SET NOT NULL; 执行时也会出现此错误: Reason code 10. [SQL State=57014, DB Errorcode=-952] 在DB2iSeries中可以做到这一点吗 使用列的类型尝试此操作 ALTER TABLE you

我已尝试使用以下脚本向我的列添加NOTNULL约束

ALTER TABLE MYDB.RULES ALTER TYPEID SET NOT NULL;
ALTER TABLE MYDB.RULES ALTER COLUMN TYPEID SET NOT NULL;
执行时也会出现此错误:

 Reason code 10. [SQL State=57014, DB Errorcode=-952] 

在DB2iSeries中可以做到这一点吗

使用列的类型尝试此操作

ALTER TABLE yourlib/yourtable ALTER COLUMN yourcolumn SET DATA 
TYPE VARCHAR ( 100) NOT NULL                           
这是正确的

你是如何发表声明的

您报告的错误代码,SQL State=
57014-已根据请求取消处理。


这让我相信,无论您如何运行该语句,您都没有看到
CPA32B2-文件规则的更改可能会导致数据丢失。(C)一
查询信息;因此,它会自动得到一个
C-Cancel

的回答,如果你想要一个约束,你就添加一个约束。首先确保表中的所有行都满足约束,然后添加约束

update mylib/myfile set myfield = ' ' where myfield is null;
ALTER TABLE mylib/myfile ADD CONSTRAINT myfieldisnull CHECK (myfield is not null );

首先,您必须识别并处理目标表的空值(更新、删除等)

然后可以在目标表上创建约束

ALTER TABLE MYDB.RULES ALTER COLUMN TYPEID SET NOT NULL;

可能是您以前更改了表,但没有运行Reorg命令。运行以下命令:

CALL SYSPROC.ADMIN_CMD('REORG TABLE MYDB.RULES');

有什么解决方案可以使用SQL强制回答“I”吗?对于DB2/iSeries来说,这是一个真正的麻烦…谷歌
CPA32B2
,您可以添加回复列表条目(
ADDRPYLE
)并更改作业(
CHGJOB
)以使用系统回复列表。不适用于DB2 for IBM i
ALTER TABLE MYDB.RULES ALTER COLUMN TYPEID SET NOT NULL;
CALL SYSPROC.ADMIN_CMD('REORG TABLE MYDB.RULES');