主キー制約を使用してテーブルを作成した場合、PK に属するフィールドには既に一意のインデックスがあります。このインデックスは、PK 制約を追加したときに作成されたもので、意味のない名前が付いています:
SQL> create table TEST_PK_IDX(id number primary key, descr varchar2(100)); Table created. SQL> select index_name, uniqueness, column_name 2 from user_ind_columns c 3 inner join user_indexes i 4 using (index_name) 5 where i.table_name = 'TEST_PK_IDX'; INDEX_NAME UNIQUENESS COLUMN_NAME -------------------- -------------------- -------------------- SYS_C007838 UNIQUE ID
プレ>ただし、別のインデックスを作成する必要がある場合は、次を使用できます:
SQL> create index idx_test on test_pk_idx(descr); Index created. SQL> select index_name, uniqueness, column_name 2 from user_ind_columns c 3 inner join user_indexes i 4 using (index_name) 5 where i.table_name = 'TEST_PK_IDX'; INDEX_NAME UNIQUENESS COLUMN_NAME -------------------- -------------------- -------------------- SYS_C007838 UNIQUE ID IDX_TEST NONUNIQUE DESCR
プレ>SQL>