我正在使用 db2 9.7* 版,似乎不可能以任何直接的方式使 NOT NULL 列可以为空。
不幸的是,没有使用对开发人员更友好的数据库的解决方案。基本上,在 MySQL 中,我想做这样的事情(其中 MY_COLUMN 曾经是 VARCHAR(200) NOT NULL):
ALTER TABLE MY_TABLE MODIFY COLUMN MY_COLUMN VARCHAR(200);
我正在使用 db2 9.7* 版,似乎不可能以任何直接的方式使 NOT NULL 列可以为空。
不幸的是,没有使用对开发人员更友好的数据库的解决方案。基本上,在 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;
文档说 ALTER TABLE 有可能 DROP NOT NULL
ALTER TABLE TABLE_NAME ALTER COLUMN COLUMN_NAME DROP NOT NULL;
适用于 DB2 9.7 及更高版本。您可能希望如何执行表重组(在 9.7 db2 中,表处于重组挂起状态,在 10.5 FP 5 中也是如此):
调用 sysproc.admin_cmd('reorg table TABLE_NAME');