数据库中的原表A创建索引AA后,将原表A改名为B,此时索引AA是否对B表有效!
请高手指点!

解决方案 »

  1.   

    我的是9I 没办法试验 你可以试试嘛改完名后,set autotrace on看看计划
      

  2.   

    用PL/SQL DEV会自动修改对应的索引的表的名称,
    如果单纯用语句修改表名的话,应该会使索引失效,
      

  3.   

    ALTER TABLE old_table_name RENAME TO new_table_name;
    刚试试了下,不好意思,ORACLE会自动去修改该表索引的表名称,不会使索引失效,索引会自动更新表名
      

  4.   


    --测试结果
    SQL> create index testindex_forcsdn on coursee(SUBJECT);Index createdSQL> select index_name from all_indexes where table_name = 'COURSEEE';INDEX_NAME
    ------------------------------SQL> select index_name from all_indexes where table_name = 'COURSEE';INDEX_NAME
    ------------------------------
    TESTINDEX
    TESTINDEX_FORCSDNSQL> rename coursee to course;Table renamedSQL> select index_name from all_indexes where table_name = 'COURSE';INDEX_NAME
    ------------------------------
    TESTINDEX
    TESTINDEX_FORCSDNSQL> 
      

  5.   

    会的啊,我在PL/SQL DEV和SQL*PLUS里都会啊
    SQL> ALTER TABLE bill RENAME TO billS;表已更改。SQL> select index_name from all_indexes where table_name = 'BILLS';
    INDEX_NAME
    ------------------------------
    BILL_INDEXSQL>  ALTER TABLE bills RENAME TO bill;表已更改。SQL> select index_name from all_indexes where table_name = 'BILL";
    ERROR:
    ORA-01756: 括号内的字符串没有正确结束
    SQL> select index_name from all_indexes where table_name = 'BILL';INDEX_NAME
    ------------------------------
    BILL_INDEX