怎么删除主表的唯一约束?

来源:1-1 SQL Developer安装

qq_嫵钶取玳_0

2016-03-21 10:08

我删除oracle主从表中的唯一约束,我先把从表的唯一约束删除掉:ALTER TABLE 表名DROP CONSTRAINT 约束名;我用同样的方法,去删除主表的唯一约束,报错(

SQL 错误: ORA-02273: 此唯一/主键已被某些外键引用

02273. 00000 -  "this unique/primary key is referenced by some foreign keys"

问一下  这种情况怎么弄?

写回答 关注

1回答

  • Lifing
    2016-03-21 14:37:02
    已采纳

    1.检查哪些表的外键引用了要删除的表的唯一/主键.

          select A.*
           from user_constraints A, user_constraints B
           WHERE b.table_name = 'MYTEST'
            and a.constraint_type = 'R'
            and a.r_constraint_name = b.constraint_name;

    2.生成所有引用要删除表的外键的创建语句.

          select 'select dbms_metadata.get_ddl(''REF_CONSTRAINT'',''' ||
              A.CONSTRAINT_NAME || ''') FROM DUAL;'
           from user_constraints A, user_constraints B
           WHERE b.table_name = 'MYTEST'
            and a.constraint_type = 'R'
            and a.r_constraint_name = b.constraint_name;
          
    3.执行步骤2中产生的SQL语句,获取外键定义.

          set long 3000
          set linesize 3000
          set pagesize 300
          执行步骤2产生的语句.
          
    4.删除表.

          drop table mytest cascade constraints;

    5.删除并重建表.

    6.建立因创建该表所删除的外键约束.

          执行步骤3中获取到的sql语句.

    7.检查各外键是否得到恢复,系统是否正常.


    qq_嫵钶取...

    非常感谢!好专业的回答!!

    2016-03-22 14:49:34

    共 1 条回复 >

Oracle数据库开发必备利器之PL/SQL基础

Oracle数据库高级开发必备的基础,通过实例带你熟练掌握

75048 学习 · 208 问题

查看课程

相似问题