如何在Oracle服务器中删除sql的表列检查?

问题描述 投票:0回答:1

我很难在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 oracle alter
1个回答
0
投票

您创建了一个匿名约束,所以这很棘手。您可以使用动态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;
/
© www.soinside.com 2019 - 2024. All rights reserved.