索引Oracle外键的示例

xkrw2x1b  于 2023-08-03  发布在  Oracle
关注(0)|答案(1)|浏览(85)

如何索引表的外键(列cnt004_id)?
有一个表ChildTable:

CREATE TABLE ChildTable (
    id NUMBER GENERATED as IDENTITY,
    cnt004_id int not null,
    tariff_dist NUMBER not null,
    foreign key (cnt004_id) references ParentTable(id)
);

字符串
我没有创建任何外键索引。

vsdwdz23

vsdwdz231#

使用create index命令。
示例父表:

SQL> create table parenttable
  2    (id int primary key);

Table created.

字符串
你的子表(这段代码不会以任何方式改变):

SQL> CREATE TABLE ChildTable (
  2      id NUMBER GENERATED as IDENTITY,
  3      cnt004_id int not null,
  4      tariff_dist NUMBER not null,
  5      foreign key (cnt004_id) references ParentTable(id)
  6  );

Table created.


创建索引:

SQL> create index i1_ct_cnt004 on childtable (cnt004_id);

Index created.

SQL>


因为,与主键约束不同-Oracle会自动创建支持它的唯一索引(如果它不存在):

SQL> select index_name, uniqueness, constraint_index
  2  from user_indexes where table_name = 'PARENTTABLE';

INDEX_NAME                     UNIQUENES CON
------------------------------ --------- ---
SYS_C0010080                   UNIQUE    YES

SQL>


Oracle不会对外键约束做同样的处理,所以你必须自己做(如果你想索引该列)。

相关问题