我正在嘗試向表中添加CLOB列(實際上將VARCHAR更改爲CLOB,但似乎只能通過添加新列來複制和刪除舊列)。沒有默認值的列應該是NOT NULL(並且表不是空的)。我怎樣才能做到這一點?在Oracle中添加NOT NULL LOB列沒有默認值
我最初的想法是創建一個虛擬默認列,而後來的變化,但是這似乎並不可能:
ALTER TABLE foo RENAME COLUMN text TO text_temp;
ALTER TABLE foo ADD (
text CLOB DEFAULT '*' NOT NULL
);
UPDATE foo SET text = text_temp;
ALTER TABLE foo DROP COLUMN text_temp;
ALTER TABLE foo MODIFY (
text CLOB NOT NULL
);
-- ORA-22296: invalid ALTER TABLE option for conversion of LONG datatype to LOB
我也試圖定義列text CLOB
並添加NOT NULL約束後來,但它給了同樣的錯誤。有沒有辦法做到這一點,而不是重新創建整個表格?
這應該工作 –
這工作確實,但它留下的缺省值NULL,這是不一樣的沒有值(SQL Developer在第一種情況下顯示NULL,第二種情況下顯示爲'(null)')。差異是否微不足道? – Tgr
@Tgr:看到我更新的答案。 –