问个ORACLE 删除主键和索引的问题

coolkoy123 2009-09-09 12:30:39
先用DROP TABLE A;把表A删除了
再用建表语句
create table GOMaterialMain (
aa VARCHAR2(16) not null,
bb VARCHAR2(16) not null,
constraint PK_AA primary key (aa)
);

报 ORA-00952 name is used by an existing object

查了下应该是表A原本就有PK_AA 这个主键,删表的时候没有删除这个主键。

想删除 这个主键 用 DROP INDEX PK_AA
又报 ORA-02429: cannot drop index used for enforcement of unique/primary key 错误

请问各位大哥,在没有表的情况下,如何删除原表对应的主键及索引?
谢谢!

...全文
1115 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
---Null--- 2021-08-02
  • 打赏
  • 举报
回复

我遇到了相似的问题。
原因:将表A改名用于备份,然后新建与表A同结构的表B。等我过几天想用表B的时候发现没有约束。此时创建同名的表B约束,就会出现这样的状况。
办法:
已知约束名称查询:
SELECT T.* FROM USER_CONS_COLUMNS T WHERE T.CONSTRAINT_NAME = '主键名';
查到结果后,根据结果的情况再执行:
ALTER TABLE 表名 DROP CONSTRAINT 主键名;

yubin88 2009-09-09
  • 打赏
  • 举报
回复
楼主你在忽悠我们吧?没有表这么有主键,如果有外键,在删除主表的时候必须先删除外键
tiancx82 2009-09-09
  • 打赏
  • 举报
回复
是删除外键约束把?
coolkoy123 2009-09-09
  • 打赏
  • 举报
回复
请问没有表,如何删除主键约束?
bai_jiong 2009-09-09
  • 打赏
  • 举报
回复
严格的话,应该不会出现你说的这种情况,如果是主键索引的话,在删除表的时候,ORACLE是会自动删除对应的索引的。

你可以先将表的主键约束删除,这样,ORACLE会自动删除主键索引。然后,再为该表添回主键约束,这样,ORACLE会自动为该表创建主键索引。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧