加入收藏 | 设为首页 | 会员中心 | 我要投稿 大连站长网 (https://www.0411zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle11g – 将列修改为NULL – Oracle

发布时间:2021-05-15 08:29:11 所属栏目:百科 来源:网络整理
导读:我有一个名为CUSTOMER的表,列数很少.其中之一是Customer_ID. 最初Customer_ID列不接受NULL值. 我已从代码级别进行了一些更改,因此默认情况下Customer_ID列将接受NULL值. 现在我的要求是,我需要再次使此列接受NULL值. 为此,我添加了执行以下查询: ALTER TA

我有一个名为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来改变表.手动完成并确保首先仔细检查所有内容.

(编辑:大连站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!