我有一个名为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;