一般的添加非空列的步驟是:先add可以為空的列,然后update該列為一個值(比如0),最后modify該列的類型
但是遇到類型為clob的就不行了。在modify這步時報錯:ORA-22296:invalid ALTER TABLE option for conversion of Long datatype to LOB,於是去找了下22296錯誤的詳細信息:(http://docs.oracle.com/cd/E11882_01/server.112/e17766/e19999.htm#ORA-24230)
Cause: An attempt was made to specify ALTER TABLE options which are disallowed during conversion of LONG datatype to LOB. The only ALTER TABLE options allowed during conversion of LONG datatype to LOB are the default clause and LOB storage clause for the column being converted to LOB.
Action: Remove the disallowed options.
解決辦法:
在update這步執行:update tableName set colName = empty_clob();
在modify這步執行:alter table tableName modify (colName not null);//不是colName clob not null,這和一般的modify是不同的!!!
示例:
alter table post_info add ( POST_CONTENT CLOB);
update post_info set post_content = empty_clob();
alter table post_info modify (POST_CONTENT not null);
COMMENT ON COLUMN "DBVOP"."POST_INFO"."POST_CONTENT" IS
'通告內容';
commit;
---------------另外:如何將not null 的clob類型的類變為null的列
語法:alter table tableName modify colName null ;
注:EMPTY_BLOB()和EMPTY_CLOB()函數是用來對大數據類型字段進行初始化操作的。
-----------------如何刪除列名帶空格的列
alter table cplnt_workorder drop column "CLIENT_ ISSUE" ;
-----------------如何修改列名
alter table cplnt_workorder rename column "CLIENT_ ISSUE1" to CLIENT_ ISSUE ;