【问题标题】:Remove all constraints from a table oracle从表 oracle 中删除所有约束
【发布时间】:2022-01-26 01:32:56
【问题描述】:

伙计们,我的问题是我不知道我添加到表中的约束名称。但我需要删除或禁用所有这些外键约束。但是怎么做呢?

SQL> desc orders;


Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ORDER_ID                                  NOT NULL VARCHAR2(10)
 PRODUCT_ID                                         VARCHAR2(10)
 DATE_OF_ORDER                                      TIMESTAMP(6)
 CUST_ID                                            VARCHAR2(10)
 QUANTITY                                           NUMBER(38)
 TOTAL_PRICE                                        FLOAT(10)
 DELIVERY_STATUS                                    VARCHAR2(10)

【问题讨论】:

    标签: sql oracle plsql foreign-keys


    【解决方案1】:

    可以通过user_constraints字典视图确定相关的外键约束,可以通过以下代码块禁用该表的外键约束

    BEGIN
      FOR c IN
        (
          SELECT * 
            FROM user_constraints c
           WHERE c.constraint_type = 'R'
             AND c.table_name = 'ORDERS')
      LOOP
        EXECUTE IMMEDIATE 'ALTER TABLE '||c.table_name||
                          ' DISABLE CONSTRAINT '||c.constraint_name;
      END LOOP;
    END;  
    /
    

    【讨论】:

      【解决方案2】:

      如果您使用的是 sql developer 之类的工具,您只需右键单击导航器中的表名并选择约束 > 全部禁用或删除

      【讨论】:

        猜你喜欢
        • 2011-04-11
        • 1970-01-01
        • 2021-02-04
        • 1970-01-01
        • 1970-01-01
        • 2010-09-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多