weixin_42399492 2010-09-17 10:36
浏览 588
已采纳

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

先用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 错误

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

  • 写回答

5条回答 默认 最新

  • 关键词㏄ 2010-09-21 09:28
    关注

    还真猜着了。其实你的数据库里有两张表,一个GOMaterialMain,一个GOMATERIALMAIN。

    这里简单说一下,或者说纠正一下。其实ORACLE是大小写区分的,但是SQL是不区分大小写的。解析的时候,SQL会自动转换为全大写,因此无论建表还是访问表,始终对应的表名是全大写的表。如果想指定大小写,需要在对象名用双引号括起来,这样在解析的时候就不会对这部分进行处理,访问使用的就是你指定的。比如使用一些工具生成的表或者列,有可能这个工具会将所有的对象都使用双引号包起来,因此建立的表的名称并不见得是全部大写。这时你使用正常的SQL是访问不到的。

    说白了,你这张表其实还在,只是你使用SELECT * FROM GOMaterialMain访问不到。如果想访问到,必须使用SELECT * FROM "GOMaterialMain"。表还在,主键自然也还在。

    现在你这种情况,如果想删除GOMaterialMain,就得使用DROP TABLE "GOMaterialMain"才可以将这个表删除。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员