SQL> SQL> -- Range SQL> drop table part_range_temp; drop table part_range_temp * ERROR at line 1: ORA-00942: table or view does not exist SQL> SQL> create table part_range_temp (c1 number(3), c2 varchar2(2), c3 char(1)) 2 partition by range (c1) 3 (partition p1 values less than (100), 4 partition p2 values less than (200), 5 partition p3 values less than (maxvalue) 6 ); Table created. SQL> SQL> -- This will create a global, non-partitioned, unique index SQL> alter table part_range_temp add constraint part_range_temp_pk primary key (c1); Table altered. SQL> select index_type, uniqueness, status, partitioned from user_indexes where 2 index_name='PART_RANGE_TEMP_PK'; INDEX_TYPE UNIQUENES STATUS PAR --------------------------- --------- -------- --- NORMAL UNIQUE VALID NO SQL> SQL> -- Create a non-unique, partitioned,local index SQL> alter table part_range_temp drop constraint part_range_temp_pk; Table altered. SQL> create index part_range_temp_pk on part_range_temp(c1) local; Index created. SQL> select index_type, uniqueness, status, partitioned from user_indexes where 2 index_name='PART_RANGE_TEMP_PK'; INDEX_TYPE UNIQUENES STATUS PAR --------------------------- --------- -------- --- NORMAL NONUNIQUE N/A YES SQL> -- Now add the PK constraint SQL> -- Is the "using index local" clause still needed? SQL> alter table part_range_temp add constraint part_range_temp_pk primary key (c1); Table altered. SQL> select index_name, index_type, uniqueness, status, partitioned from user_indexes 2 where table_name='PART_RANGE_TEMP'; INDEX_NAME INDEX_TYPE UNIQUENES STATUS ------------------------------ --------------------------- --------- -------- PAR --- PART_RANGE_TEMP_PK NORMAL NONUNIQUE N/A YES SQL> select constraint_name,constraint_type,status from user_constraints 2 where table_name='PART_RANGE_TEMP'; CONSTRAINT_NAME C STATUS ------------------------------ - -------- PART_RANGE_TEMP_PK P ENABLED SQL> SQL> drop table part_range_temp; Table dropped. SQL> SQL> SQL> spool off