oracle新增、删除索引以及主键修改
一.oracle 表加索引
首先,查看目前已經(jīng)建立的索引
select index_name from all_indexes where table_name = 'table1';2.接著,建立索引
create index 索引名 on 表名(列名);create index table1_album_idx on table (aid); create index table1_user_idx on table (userid);3.再重復(fù)第一步,驗證一下,是否成功
二.oracle表刪除索引
相信不少人遇到過ORA-02429: cannot drop index used for enforcement of unique /primary key 這個錯誤,對應(yīng)的中文提示“ORA-02429: 無法刪除用于強制唯一/主鍵的索引”,其實從錯誤提示信息已經(jīng)很明顯了。下面還是用一個簡單的例子述說一下該錯誤的來龍去脈。
ORA-02429錯誤的原因是因為用戶試圖刪除一個用于強制唯一/主鍵的索引,解決方法也很簡單,刪除對應(yīng)的約束就會自動刪除該索引。
[oracle@DB-Server ~]$ oerr ora 2429
02429, 00000, “cannot drop index used for enforcement of unique/primary key”
// *Cause: user attempted to drop an index that is being used as the
// enforcement mechanism for unique or primary key.
// *Action: drop the constraint instead of the index.
1:新建測試表TAB_TEST, 如下所示:
CREATE TABLE TAB_TEST (JOB_ORDER_NO VARCHAR2(20 BYTE),DIMM_ID NUMBER,MRP_GROUP_CD VARCHAR2(10 BYTE),ITEM_CAT VARCHAR2(20 BYTE),REQUIRED_DATE DATE,PURCHASED_BY VARCHAR2(10 BYTE),USED_BY VARCHAR2(10 BYTE),SUPPLIER_CD VARCHAR2(10 BYTE) )2:添加主鍵約束,如下所示
ALTER TABLE TAB_TESTADD CONSTRAINT PK_TAB_TESTPRIMARY KEY(JOB_ORDER_NO, DIMM_ID, MRP_GROUP_CD, ITEM_CAT);3:查看測試表的索引信息
SQL> SELECT INDEX_NAME FROM DBA_INDEXES WHERE TABLE_NAME='TAB_TEST';INDEX_NAME ------------------------------ PK_TAB_TEST4:查看測試表的約束信息:
SQL> SELECT CONSTRAINT_NAME FROM DBA_CONSTRAINTS WHERE TABLE_NAME='TAB_TEST';CONSTRAINT_NAME ------------------------------ PK_TAB_TEST5:刪除測試表的索引PK_TAB_TEST
SQL> DROP INDEX PK_TAB_TEST; DROP INDEX PK_TAB_TEST* ERROR at line 1: ORA-02429: cannot drop index used for enforcement of unique/primary key解決方法:
刪除對應(yīng)的約束就會自動刪除該索引。而不是直接去刪除該索引!
SQL> ALTER TABLE TAB_TEST DROP CONSTRAINT PK_TAB_TEST;Table altered.SQL> SELECT CONSTRAINT_NAME FROM DBA_CONSTRAINTS WHERE TABLE_NAME='CONSTRAINT_NAME'; no rows selectedSQL> SELECT INDEX_NAME FROM DBA_INDEXES WHERE TABLE_NAME='TAB_TEST';no rows selectedSQL>三.oracle主鍵修改&設(shè)置某一字段可以為null
1.oracle主鍵修改
1.1)首先查看需要修改的表的主鍵名,默認(rèn)的情況下,數(shù)據(jù)庫會自動分配
select * from user_cons_columns where table_name='表名';注意表名可能需要大寫,否則可能查不出來。
1.2)刪除主鍵約束
alter table 表名 drop constraint 主鍵名(通過上一步查找出來)1.3)添加主鍵約束
alter table 表名 add constraint 主鍵名 primary key(字段名1,字段名2...);主鍵名命名規(guī)則建議為pk_表名
2.oracle設(shè)置字段可以為空
alter table 表名 modify 字段名 null;總結(jié)
以上是生活随笔為你收集整理的oracle新增、删除索引以及主键修改的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天地图(全国版)根据已知点集合绘制直线
- 下一篇: 25岁模型师因病离世,母亲自学3D建模替