我很难在sql中使用Alter删除CHECK。谁能帮我吗?
CREATE TABLE MyProject_COST (
ID int(4) NOT NULL UNIQUE,
detail varchar2(25) NOT NULL,
cost int(6) CHECK(Cost >= 500)
);
ALTER TABLE MyProject_COST
ALTER COLUMN Cost int(6)
您创建了一个匿名约束,所以这很棘手。您可以使用动态SQL检索约束名称,然后使用execute immediate
命令将其删除:
declare
c_name varchar2(255 char);
begin
select c.constraint_name into c_name
from all_constraints c
join all_cons_columns cc
on cc.table_name = c.table_name
and cc.constraint_name = c.constraint_name
where
cc.table_name = 'MYPROJECT_COST'
and cc.column_name ='COST'
and c.constraint_type = 'C' ;
if c_name is not null then
execute immediate 'alter table myproject_cost drop constraint "' || c_name || '"';
end if;
end;
/