【问题标题】:oracle - drop a constraint defined withinoracle - 删除其中定义的约束
【发布时间】:2012-11-22 14:49:34
【问题描述】:

我有一个 oracle 查询作为 -

occupation varchar2(50) CHECK(occupation IN ('student','govt_service','private','business')));

现在我需要删除检查约束,所以我使用以下查询-

ALTER TABLE registration drop constraint occupation;

但由于我没有定义约束名称,所以它说约束名称无效。有没有办法删除约束?我想我可以更改表并添加约束的名称,然后将其删除,但还有其他方法吗?

【问题讨论】:

    标签: oracle oracle10g


    【解决方案1】:

    运行此查询:

    select * from all_constraints where table_name = 'REGISTRATION';
    

    您会找到约束名称。

    编辑:我还建议您有一个表Occupations 并用外键替换当前约束。 (如果您已经想这样做,请向我道歉)。此外,规范化,职业可能有 ID,并且应在这些 ID 上定义外来。

    【讨论】:

      【解决方案2】:

      尝试在 USER_CONSTRAINTS 表中查询 CONSTRAINT_NAME,它必须为您创建的约束生成系统名称。

      select * from USER_CONSTRAINTS
      where owner='<your_schema>' and CONSTRAINT_TYPE='C';
      

      【讨论】:

        猜你喜欢
        • 2011-04-11
        • 2022-01-26
        • 1970-01-01
        • 2021-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-27
        相关资源
        最近更新 更多