在DB2中启用数据捕获时使列为空

在DB2中启用数据捕获时使列为空,db2,nullable,alter,non-nullable,notnull,Db2,Nullable,Alter,Non Nullable,Notnull,我使用的是DB2Version9.7*,似乎不可能以任何简单的方式使NOTNULL列为空 不幸的是,使用开发人员更友好的数据库的解决方案不可用。基本上,在MySQL中,我想做这样的事情(我的_列过去是VARCHAR(200)notnull): 声明ALTER表可以删除NOT NULL我的最终查询结果如下: ALTER TABLE MY_TABLE DATA CAPTURE NONE; ALTER TABLE MY_TABLE ALTER MY_COLUMN DROP NOT NULL; ALTE

我使用的是DB2Version9.7*,似乎不可能以任何简单的方式使NOTNULL列为空

不幸的是,使用开发人员更友好的数据库的解决方案不可用。基本上,在MySQL中,我想做这样的事情(我的_列过去是VARCHAR(200)notnull):


声明ALTER表可以删除NOT NULL

我的最终查询结果如下:

ALTER TABLE MY_TABLE DATA CAPTURE NONE;
ALTER TABLE MY_TABLE ALTER MY_COLUMN DROP NOT NULL;
ALTER TABLE MY_TABLE DATA CAPTURE CHANGES;

ALTER TABLE TABLE\u NAME ALTER COLUMN\u NAME DROP不为空

适用于DB29.7及更高版本。您可能希望如何执行表reorg(在9.7 db2中,表处于reorg挂起状态,在10.5 FP 5中也是如此):


调用sysproc.admin_cmd('reorg table_NAME')

对。我所面临的问题是,数据捕获正在进行,尽管我没有意识到这一点,并且可能不公平地得出结论,DB2被过度复杂化是没有理由的。非常有用。:-)我在DB2环境中遇到了同样的问题,在阅读您的答案后,我可以用
altertable TABLE\u NAME ALTER COLUMN\u NAME DROP NOT NULL
来解决这个问题,因为其他人在这个答案上遇到了障碍:这是因为“DROP COLUMN,在任何打开数据捕获的表上都不允许ALTER nullability”--这就是必须更改数据捕获的原因。
ALTER TABLE MY_TABLE DATA CAPTURE NONE;
ALTER TABLE MY_TABLE ALTER MY_COLUMN DROP NOT NULL;
ALTER TABLE MY_TABLE DATA CAPTURE CHANGES;