oracle11g – 将列修改为NULL – Oracle

前端之家收集整理的这篇文章主要介绍了oracle11g – 将列修改为NULL – Oracle前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个名为CUSTOMER的表,列数很少.其中之一是Customer_ID.

最初Customer_ID列不接受NULL值.

我已从代码级别进行了一些更改,因此默认情况下Customer_ID列将接受NULL值.

现在我的要求是,我需要再次使此列接受NULL值.

为此,我添加了执行以下查询

ALTER TABLE Customer MODIFY Customer_ID nvarchar2(20) NULL

我收到以下错误

ORA-01451 error,the column already allows null entries so
therefore cannot be modified

这是因为我已经使Customer_ID列接受NULL值.

有没有办法在执行上述查询之前检查列是否接受NULL值…?

您可以在 USER_TAB_COLUMNS中使用NULLABLE列.这将告诉您列是否允许使用二进制Y / N标志的空值.

如果你想把它放在一个脚本中,你可以这样做:

declare

   l_null user_tab_columns.nullable%type;

begin

   select nullable into l_null
     from user_tab_columns
    where table_name = 'CUSTOMER'
      and column_name = 'CUSTOMER_ID';

   if l_null = 'N' then
      execute immediate 'ALTER TABLE Customer 
                          MODIFY (Customer_ID nvarchar2(20) NULL)';
   end if;

end;

最好不要使用动态sql来改变表.手动完成并确保首先仔细检查所有内容.

猜你在找的Oracle相关文章