20

我正在使用 db2 9.7* 版,似乎不可能以任何直接的方式使 NOT NULL 列可以为空。

不幸的是,没有使用对开发人员更友好的数据库的解决方案。基本上,在 MySQL 中,我想做这样的事情(其中 MY_COLUMN 曾经是 VARCHAR(200) NOT NULL):

ALTER TABLE MY_TABLE MODIFY COLUMN MY_COLUMN VARCHAR(200);
4

3 回答 3

29

我的最终查询最终是这样的:

ALTER TABLE MY_TABLE DATA CAPTURE NONE;
ALTER TABLE MY_TABLE ALTER MY_COLUMN DROP NOT NULL;
ALTER TABLE MY_TABLE DATA CAPTURE CHANGES;
于 2011-08-02T14:08:58.730 回答
12

文档说 ALTER TABLE 有可能 DROP NOT NULL

于 2011-08-02T13:43:25.727 回答
5

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');

于 2016-03-03T06:47:44.967 回答