天天看點

Oracle 外鍵

Oracle 外鍵

外鍵用于與另一張表的關聯。是能确定另一張表記錄的字段,用于保持資料的一緻性。

Oracle 外鍵建立

在Oracle資料庫中,外鍵是強制實施參照完整性的一種方式,使用外鍵就意味着一個表中的值在另一個表中也必須出現。

被引用的表稱為父表,而帶有外鍵的表稱為子表。子表中的外鍵通常會引用父表中的主鍵。

1、使用CREATE TABLE語句建立

使用CREATE TABLE語句建立外鍵的文法是:

CREATE TABLE table_name

(

  column1 datatype null/not null,

  column2 datatype null/not null,

  ...

  CONSTRAINT fk_column

    FOREIGN KEY (column1, column2, ... column_n)

    REFERENCES parent_table (column1, column2, ... column_n)

);

示例:

CREATE TABLE supplier

( supplier_id numeric(10) not null,

  supplier_name varchar2(50) not null,

  contact_name varchar2(50),

  CONSTRAINT supplier_pk PRIMARY KEY (supplier_id)

CREATE TABLE products

( product_id numeric(10) not null,

  supplier_id numeric(10) not null,

  CONSTRAINT fk_supplier

    FOREIGN KEY (supplier_id)

    REFERENCES supplier(supplier_id)

在這個例子中,我們在supplier表上建立了一個名為supplier_pk的主鍵。 它隻包含一個字段 - supplier_id字段。 然後,在products表上建立了一個名為fk_supplier的外鍵,該表根據supplier_id字段引用supplier表。

也可以建立一個具有多個字段的外鍵,如下例所示:

  CONSTRAINT supplier_pk PRIMARY KEY (supplier_id, supplier_name)

  CONSTRAINT fk_supplier_comp

    FOREIGN KEY (supplier_id, supplier_name)

    REFERENCES supplier(supplier_id, supplier_name)

在這個例子中,外鍵稱為fk_foreign_comp基于兩個字段 - supplier_id和supplier_name字段引用供應商表。

2、使用ALTER TABLE語句建立

在ALTER TABLE語句中建立外鍵的文法是:

ALTER TABLE table_name

ADD CONSTRAINT constraint_name

   FOREIGN KEY (column1, column2, ... column_n)

   REFERENCES parent_table (column1, column2, ... column_n);

ALTER TABLE products

ADD CONSTRAINT fk_supplier

  FOREIGN KEY (supplier_id)

  REFERENCES supplier(supplier_id);

在這個例子中,我們建立了一個名為fk_supplier的外鍵,它根據supplier_id字段引用supplier表的supplier_id字段。

我們也可以建立一個具有多個字段的外鍵,如下例所示:

  FOREIGN KEY (supplier_id, supplier_name)

  REFERENCES supplier(supplier_id, supplier_name);

Oracle 級聯删除外鍵

所謂的級聯删除是指當主表中的一條記錄被删除,那麼子表中所關聯的記錄也相應的自動删除。本教程将教大家如何在Oracle中使用級聯删除外鍵。

使用CREATE TABLE語句定義級聯删除

以下是使用CREATE TABLE語句定義級聯删除的文法:

     FOREIGN KEY (column1, column2, ... column_n)

     REFERENCES parent_table (column1, column2, ... column_n)

     ON DELETE CASCADE

    ON DELETE CASCADE

以上示例中,我們在supplier表建立了一個名為supplier_pk的主鍵,這個主鍵隻包含supplier_id字段。

然後在products表上建立了一個名為fk_supplier的外鍵,該表根據supplier_id字段引用supplier表的supplier_pk字段。

由于級聯删除,當supplier表中的記錄被删除時,products表中相應的所有記錄也将被删除,因為這些記錄具有相同的supplier_id值。

此外,我們也可以建立一個具有多個字段的外鍵(帶級聯删除),如下例所示:

在這個例子中,fk_foreign_comp外鍵基于兩個字段:supplier_id和supplier_name字段引用supplier表。

根據supplier_id和supplier_name删除supplier表中的記錄時,外鍵fk_foreign_comp上的級聯删除會導緻products表中的所有對應記錄也會被級聯删除。

使用ALTER TABLE語句定義級聯删除

除了CREATE TABLE語句外,我們還可以用ALTER TABLE語句定義級聯删除,具體文法如下:

   REFERENCES parent_table (column1, column2, ... column_n)

   ON DELETE CASCADE;

  REFERENCES supplier(supplier_id)

  ON DELETE CASCADE;

在本例中,我們建立了一個名為fk_supplier的外鍵(帶級聯删除),該外鍵基于supplier_id字段引用supplier表。

  REFERENCES supplier(supplier_id, supplier_name)

Oracle 怎麼删除外鍵

在Oracle中,如何去删除自己建立的外鍵呢?本教程就為大家介紹Oracle中删除外鍵的方法。

在Oracle中,我們可以使用ALTER TABLE語句來對外鍵進行删除。

文法

DROP CONSTRAINT constraint_name;

示例

我們先使用下方的代碼建立一個外鍵:

通過以上代碼,我們在supplier表上建立了一個名為supplier_pk的主鍵。然後再在products表上建立了一個名為fk_supplier的外鍵。

如果我們想要删除這個新建立的外鍵,我們可以執行以下的代碼:

DROP CONSTRAINT fk_supplier;

這樣,我們就成功的删除了這個建立的fk_supplier外鍵。

Oracle 怎麼禁用外鍵

我們建立外鍵後,可能有時會遇到要禁用外鍵的情況,那麼在Oracle中,我們如何對外鍵進行禁用呢?

在Oracle中,我們要禁用外鍵可以使用以下文法:

DISABLE CONSTRAINT constraint_name;

我們先通過以下代碼建立一個名為fk_supplier的外鍵:

在這個例子中,在supplier表上建立了一個名為supplier_pk的主鍵。 它隻包含一個字段 - supplier_id字段。 然後,我們在products表上建立了一個名為fk_supplier的外鍵,products表的supplier_id字段引用supplier表的supplier_id字段。

如果想禁用這個外鍵,可以執行以下指令:

DISABLE CONSTRAINT fk_supplier;

Oracle 啟用外鍵

在Oracle中,面對已經被禁用的外鍵,我們該如何将它重新啟用呢?本教程就為大家帶來Oracle外鍵啟用方法。

外鍵啟用文法

ENABLE CONSTRAINT constraint_name;

我們可以先建立一個名為fk_supplier的外鍵,

然後對這個外鍵進行禁用,

現在,我們将重新啟用這個被禁用的fk_supplier外鍵,可以執行以下指令:

上一篇: mysql外鍵
下一篇: SQLite外鍵