web-dev-qa-db-ja.com

データキャプチャが有効な場合、DB2で列をNULL可能にします

私はdb2バージョン9.7 *を使用していますが、単純な方法でNOT NULL列をNULL可能にすることは不可能のようです。

残念ながら、開発者にとって使いやすいデータベースを使用するソリューションは利用できません。基本的に、MySQLでは、次のようなことをしたいと思います(MY_COLUMNはVARCHAR(200)NOT NULLでした)。

ALTER TABLE MY_TABLE MODIFY COLUMN MY_COLUMN VARCHAR(200);
19
lukewm

私の最終的なクエリは次のようなものになりました。

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

documentation は、ALTER TABLEにDROP NOT NULLの可能性があることを示します

12
djna

ALTER TABLE TABLE_NAME ALTER COLUMN COLUMN_NAME DROP NOT NULL;

dB2 9.7以降で動作します。どのようにテーブルの再編成を実行したいかもしれません(9.7では、db2はテーブルを再編成保留状態にします。10.5FP 5も同じです):

call sysproc.admin_cmd( 'reorg table TABLE_NAME');