我正在使用db2版本9.7 *,似乎不可能以任何直接方式使NOT NULL列爲空。使列可爲空DB2
不幸的是,使用更開發友好的數據庫的解決方案不可用。基本上,在MySQL說話,我想這樣做(其中MY_COLUMN曾經是VARCHAR(200)NOT NULL):
ALTER TABLE MY_TABLE MODIFY COLUMN MY_COLUMN VARCHAR(200);
我正在使用db2版本9.7 *,似乎不可能以任何直接方式使NOT NULL列爲空。使列可爲空DB2
不幸的是,使用更開發友好的數據庫的解決方案不可用。基本上,在MySQL說話,我想這樣做(其中MY_COLUMN曾經是VARCHAR(200)NOT NULL):
ALTER TABLE MY_TABLE MODIFY COLUMN MY_COLUMN VARCHAR(200);
我的最終查詢結束了這樣的事:
ALTER TABLE MY_TABLE DATA CAPTURE NONE;
ALTER TABLE MY_TABLE ALTER MY_COLUMN DROP NOT NULL;
ALTER TABLE MY_TABLE DATA CAPTURE CHANGES;
的documentation說,ALTER TABLE必須丟棄NOT NULL
的可能性ALTER TABLE TABLE_NAME ALTER COLUMN COLUMN_NAME DROP NOT NULL;
適用於DB2 9.7及更高版本。你可能想要執行一個表reorg(在9.7 db2中,表格處於reorg暫掛狀態,在10.5 FP 5中也是如此):
call sysproc.admin_cmd('reorg table TABLE');
]對於其他人在這個答案上磕磕絆絆:這是由於[SQL0270N函數不支持(原因代碼=「100」)](http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.5.0/com.ibm.db2.luw.messages.sql.doc/doc/msql00270n.html?lang = en)「刪除列,並且在任何開啓了數據捕獲的表上不允許修改可空性。」 - 這就是爲什麼數據捕獲必須改變的原因。 –