关于创建主键和索引的关系一个小小測试
生活随笔
收集整理的這篇文章主要介紹了
关于创建主键和索引的关系一个小小測试
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
創建主鍵時,所相應的列假設沒有索引。數據庫默認會自己主動創建一個索引;假設對于列有索引,那么創建主鍵不會再創建索引。這里要注意,列值必須滿足主鍵的要求(唯一,非空)。簡單測試例如以下:
SQL> create table wxlun_pri(a number);
Table created.
SQL> alter table wxlun_pri add constraint PRIMARY_KEY_REPLY primary key (a);???? ------創建主鍵約束
Table altered.
SQL> select index_name from user_indexes where table_name='WXLUN_PRI';????? ------默認生成索引
INDEX_NAME
------------------------------
PRIMARY_KEY_REPLY
SQL>??? alter table wxlun_pri drop constraint? PRIMARY_KEY_REPLY;
Table altered.
SQL> select index_name from user_indexes where table_name='WXLUN_PRI';
no rows selected
SQL> create index idx_wxlun_pri on wxlun_pri(a);??? ------創建一個一般索引,測試有反復值時加入主鍵約束
Index created.
SQL> insert into wxlun_pri values(1);
1 row created.
SQL> /
1 row created.
SQL> commit;
Commit complete.
SQL> select * from wxlun_pri;
???????? A
----------
???????? 1
???????? 1
SQL> alter table wxlun_pri add constraint PRIMARY_KEY_REPLY primary key (a);???? ------原索引有反復值。加入主鍵約束失敗
alter table wxlun_pri add constraint PRIMARY_KEY_REPLY primary key (a)
???????????????????????????????????? *
ERROR at line 1:
ORA-02437: cannot validate (WXLUN.PRIMARY_KEY_REPLY) - primary key violated
刪除反復值。加入主鍵約束
1 row deleted.
SQL> commit;
Commit complete.
SQL> select * from wxlun_pri;
???????? A
----------
???????? 1
SQL> alter table wxlun_pri add constraint PRIMARY_KEY_REPLY primary key (a);??? ------成功
Table altered.
SQL> select index_name from user_indexes where table_name='WXLUN_PRI';
INDEX_NAME
------------------------------
IDX_WXLUN_PRI
SQL> drop table wxlun_pri;
Table dropped.
SQL>
總結
以上是生活随笔為你收集整理的关于创建主键和索引的关系一个小小測试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: objective-c 多媒体 音乐播放
- 下一篇: 有关数据结构基础知识(数据结构 严蔚敏