Oracle での外部キーの設定プロセスの詳細な紹介

PHPz
リリース: 2023-04-04 09:29:55
オリジナル
4220 人が閲覧しました

Oracle データベースは、外部キーのサポートなどの強力な機能を備えた、非常に人気のあるリレーショナル データベース管理システム (RDBMS) です。

外部キーは、あるテーブルで別のテーブルの行に関連付けるために使用されるフィールドまたはフィールドのグループを指します。これを使用して、データの整合性を確保し、クエリベースのデータ アクセスを有効にすることができます。外部キー制約を追加する前に、必要なテーブルとテーブル間の関連付けを Oracle で確立する必要があります。今回はOracleにおける外部キーの設定手順を詳しく紹介します。

1. テーブルとリレーションシップの作成
まず、外部キー制約を設定する必要があるテーブルと、そのテーブルを指すテーブルを作成する必要があります。 Customers テーブルを Orders テーブルに関連付けたいとします。次のコードを使用して、Oracle でこれら 2 つのテーブルを作成できます。

CREATE TABLE customers (
  customer_id INT PRIMARY KEY,
  customer_name VARCHAR(50),
  customer_email VARCHAR(100)
);

CREATE TABLE orders (
  order_id INT PRIMARY KEY,
  order_date DATE,
  customer_id INT,
  FOREIGN KEY (customer_id)
  REFERENCES customers(customer_id)
);
ログイン後にコピー

上の例では、customers と order という 2 つのテーブルを作成しました。 order テーブルには、顧客に対応する customer_id フィールドが含まれています。これは、customers テーブルの主キー フィールドです。

2. 外部キー制約の追加
関係を確立した後、外部キー制約を追加できます。 Oracle の外部キー制約は、テーブルの作成時に定義することも、テーブルの作成後に追加することもできます。

前のステップでは、外部キー制約を定義し、FOREIGN KEY および REFERENCES ステートメントを通じてテーブルに追加しました。ここでは、各キーワードの意味を詳しく説明します。

  1. FOREIGN KEY: 外部キー フィールドを定義します。
  2. REFERENCES: 外部キーのターゲット テーブルを定義し、ターゲット テーブルの主キーを指定します。
  3. ON DELETE CASCADE: 親テーブルのレコードを削除するときのカスケード操作を定義します。親テーブルのレコードが削除されると、子テーブルの関連レコードも削除されます。 ON DELETE SET NULL または ON DELETE NO ACTION を使用して、外部キーを NULL に設定したり、削除を禁止したりするなど、他の操作を指定できます。

Oracle では、外部キー制約を追加するための構文は次のとおりです。

ALTER TABLE child_table 
ADD CONSTRAINT fk_name 
FOREIGN KEY (child_column) 
REFERENCES parent_table (parent_column);
ログイン後にコピー

このうち、child_table は外部キー フィールドを含む子テーブル、child_column は外部キー フィールドの名前です。外部キー列、parent_table はターゲット テーブルの名前、parent_column はターゲット テーブルの主キー列の名前です。 fk_name は外部キー制約の名前であり、一意である必要があります。

たとえば、orders テーブルでは、次の外部キー制約を追加できます (これは、テーブルの作成時に CREATE TABLE ステートメントを使用して実行できることに注意してください):

ALTER TABLE orders 
ADD CONSTRAINT fk_customer_id 
FOREIGN KEY (customer_id) 
REFERENCES customers(customer_id) 
ON DELETE CASCADE;
ログイン後にコピー

これは次のようになります。 order テーブル内で、fk_customer_id という名前の外部キー制約をorders に追加します。これは、customers テーブルの主キー列 customer_id を参照します。 Customers テーブルの行を削除すると、その行に関連付けられているすべての注文も削除されます。

3. 外部キー制約をテストする
外部キー制約をテーブルに追加したら、それが適切に機能するかどうかをテストできます。この制約は、customer_id 値と一致しない行を order テーブルに挿入することでテストできます。

INSERT INTO orders (order_id, order_date, customer_id)
VALUES (1, '2021-01-01', 100);

-- ERROR: ORA-02291: integrity constraint (fk_customer_id) violated - parent key not found
ログイン後にコピー

これは、customers テーブルに存在しない customer_id 値を参照しているため、エラーが発生します。整合性制約関連のエラー コード ORA-02291 を使用して、外部キーが機能していることを確認できます。

4. 概要
Oracle では、外部キーはデータの整合性を確保し、テーブル間の関係を維持するための重要なツールです。 FOREIGN KEY および REFERENCES キーワードを使用して外部キー制約を定義し、ON DELETE CASCADE、SET NULL、または NO ACTION を使用してカスケード操作を定義できます。外部キー制約を定義した後、それが適切に動作するかどうかをテストし、データベース操作で機能することを確認できます。

以上がOracle での外部キーの設定プロセスの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート