如何删除检查约束?

kodder360

我很难使用sql中的Alter删除CHECK。谁能帮我吗?

CREATE TABLE MyProject_COST (
    ID int(4) NOT NULL UNIQUE,
    detail varchar2(25) NOT NULL,
    cost int(6) CONSTRAINT cost_project CHECK(cost>=500)
);

ALTER TABLE MyProject_COST ALTER COLUMN Cost int(6) 
专线小巴

Oracle确实alter table ... drop constraint对此具有语法。

但是由于您创建了匿名约束,所以这很棘手-因为您不知道约束的名称。

一种选择是使用动态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;
/

DB Fiddle上的演示

create table myproject_cost (
        id int not null unique,
        detail varchar2(25) not null,
        cost int check(cost >= 500)
    );

insert into MyProject_COST(id, detail, cost) values(1, 'foo', 0);
-- ORA-02290: check constraint (FIDDLE_XUVVCZVSYWWROHKPBFUF.SYS_C0030623) violated

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;
/
-- 1 rows affected

insert into MyProject_COST(id, detail, cost) values(1, 'foo', 0);
-- 1 rows affected

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用PHP检查删除限制上的外键约束

来自分类Dev

如何使用PHP检查删除限制上的外键约束

来自分类Dev

如何删除Xcode约束?

来自分类Dev

如何获取检查规则约束

来自分类Dev

Postgres:删除varchar列上的检查约束

来自分类Dev

如何检查/删除元素?

来自分类Dev

创建检查约束时如何替换变量?

来自分类Dev

如何检查SQL Server约束是否存在?

来自分类Dev

如何检查唯一键约束

来自分类Dev

如何使用oleDb检查域约束?

来自分类Dev

删除对没有约束名称的列的检查

来自分类Dev

Interface Builder:如何清除已删除的约束?

来自分类Dev

如何删除情节提要或菜单上的约束

来自分类Dev

Redshift-如何删除NOT NULL约束?

来自分类Dev

如何删除未命名的主键约束

来自分类Dev

如何删除mysql中列的键约束?

来自分类Dev

如何在sql中添加删除约束

来自分类Dev

我在SQL Server上有检查约束,如何在C#中设置检查约束的验证?

来自分类Dev

'删除子视图'将删除相关的约束。iOS如何工作?

来自分类Dev

如何检查列是否没有null约束?

来自分类Dev

如何检查视图中是否已经存在约束?

来自分类Dev

如何检索SQL Server检查约束相关性列

来自分类Dev

C ++:如何测试编译错误以检查约束

来自分类Dev

如何在mysql中插入电话号码的检查约束?

来自分类Dev

如何在检查约束中使用递归CTE?

来自分类Dev

如何在多列中重用检查约束或使用 relues

来自分类Dev

如何在SSMS中检查表的约束

来自分类Dev

如何在 pgadmin 4 中的表中添加检查约束?

来自分类Dev

如何检查 Python 对象是否满足类型约束?