Sql 如何在DB2iSeries中的现有列中添加NOTNULL约束?
我已尝试使用以下脚本向我的列添加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
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');