
# 修改索引只调用索引名提示索引不存在
#### 问题现象
创建分区表索引HR_staffS_p1_index1，不指定索引分区的名字。
```
CREATE INDEX HR_staffS_p1_index1 ON HR.staffS_p1 (staff_ID) LOCAL;
```
创建分区索引HR_staffS_p1_index2，并指定索引分区的名字。
```
CREATE INDEX HR_staffS_p1_index2 ON HR.staffS_p1 (staff_ID) LOCAL
(
    PARTITION staff_ID1_index,
    PARTITION staff_ID2_index TABLESPACE example3,
    PARTITION staff_ID3_index TABLESPACE example4
) TABLESPACE example;
```
修改索引分区staff_ID1_index的表空间为example1：
调用"ALTER INDEX HR_staffS_p1_index2 MOVE PARTITION staff_ID2_index TABLESPACE example1;"提示索引不存在。
#### 原因分析
重新创建索引CREATE INDEX HR_staffS_p1_index2 MOVE PARTITION staff_ID2_index TABLESPACE example1，提示索引已存在，然后执行以下SQL命令或者gsql客户端元命令\\d+ HR.staffS_p1 查询索引时发现索引已存在。
```
SELECT * FROM DBA_INDEXES WHERE index_name = HR.staffS_p1 ;
```
推测是当前模式是public模式，而不是hr模式，导致检索不到该索引。
使用"ALTER INDEX hr.HR_staffS_p1_index2 MOVE PARTITION staff_ID2_index TABLESPACE example1;"验证推测，发现调用成功。
接着调用ALTER SESSION SET CURRENT_SCHEMA TO hr;再次调用"ALTER INDEX HR_staffS_p1_index2 MOVE PARTITION staff_ID2_index TABLESPACE example1;"发现设置成功。
#### 解决办法
在操作表、索引、视图时加上schema引用，格式：schema.table。
