我有个表A当我select * from A 或者 select * from TRADE.A的时候,正常,有数据能select出来的但是当我想删除这个表的时候,发现删不掉,报一个表或试图不存在的错误
Drop table A 而且用trancate table A也报同样的错误但是如果用delete from A那就没问题,表里的数据能删除....我用Toad或者PLSQL登录进去查看的时候,左边的表列表里也没有A这个表...以上所有操作都是用同一个用户trade进行的,表所在表空间是TRADE
请问这个表应该怎么删除?另外弱弱的问下select * from TRADE.A里面这个TRADE代表的是表空间还是用户?多谢了

解决方案 »

  1.   

    可能是个同义词,查查:
    SELECT * FROM dba_objects
    where object_name ='A'
      

  2.   

    TRADE代表数据库的名字...表示TRADE库下面的表A,所以你在删除的时候应该是drop table TRADE.a
    这样就可以删掉了...因为你在本用户登录的时候根本没有登录这个数据库,你只是对那个数据库有操作权力..
    你也可以在用户里面找到哪个表.....
      

  3.   

    A可能是个视图或同义词。执行select object_type,owner from all_objects where object_name='A';看看object_type是什么内容。
    TRADE.A里面这个TRADE代表的是用户。
      

  4.   

    drop table trade.A 也不行哦
    select   object_type,owner   from   all_objects   where   object_name='A';什么东西也没有select出来...
      

  5.   

    找到原因了....这个object的object type不是Table,而是SYNONYM....用了drop SYNONYM就删除掉了但是请问SYNONYM是什么东西?而SELECT   *   FROM   dba_objects
    where   object_name   ='A' 出不来东西可能是因为这个object_name 大小写敏感的吧...
      

  6.   

    dba_XXX的视图不是任何人都可以查询的。一般查all_XXX视图,只有DBA才查dba_XXX。