为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

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

问一下  这种情况怎么弄?

正在回答

1 回答

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.检查各外键是否得到恢复,系统是否正常.


0 回复 有任何疑惑可以回复我~
#1

qq_嫵钶取玳_0 提问者

非常感谢!好专业的回答!!
2016-03-22 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信