更改clob列的约束

时间:2016-01-11 14:22:07

标签: sql oracle constraints clob

我想将clob列的NOT NULL约束更改为NULL约束。但是,在尝试时

ALTER TABLE myTable ALTER COLUMN myClobCol clob NULL;

ALTER TABLE myTable modify myClobCol clob NULL;

我收到以下错误:

ORA-01735: invalid ALTER TABLE option

ORA-22859: invalid modification of columns

我做错了什么?在这种情况下我是否还必须使用临时柱?我知道通过使用临时列将数据类型从clob更改为varchar2的情况,但在这里我只想更改约束。为什么这不可能?

提前致谢!

2 个答案:

答案 0 :(得分:1)

您正尝试将列的类型从CLOB设置为CLOB,但它无效,因为尝试设置对象列无效。仅使用ALTER TABLE myTable modify myClobCol NULL;设置列的NULL约束。

答案 1 :(得分:0)

试试这个:

declare
  col_nullable varchar2(1);
begin
  select nullable into col_nullable
  from user_tab_columns
  where table_name = 'myTable'
  and   column_name = 'myClobCol';

  if col_nullable = 'N' then
    execute immediate 'alter table mytable modify (myClobCol null)';
  end if;
end;