日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle新增、删除索引以及主键修改

發(fā)布時間:2024/3/26 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle新增、删除索引以及主键修改 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
--根據(jù)索引名,查詢表索引字段 select * from user_ind_columns where index_name='索引名'; --根據(jù)表名,查詢一張表的索引 select * from user_indexes where table_name='表名'; --根據(jù)索引名,查詢屬于哪張表 select * from all_indexes where index_name ='INX_DATA_QUERY_DEF';

一.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_TEST

4:查看測試表的約束信息:

SQL> SELECT CONSTRAINT_NAME FROM DBA_CONSTRAINTS WHERE TABLE_NAME='TAB_TEST';CONSTRAINT_NAME ------------------------------ PK_TAB_TEST

5:刪除測試表的索引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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。