Foreign Keys with cascade delete

В этом учебном материале вы узнаете, как использовать foreign keys with cascade delete (внешний ключ с каскадным удалением) в Oracle/PLSQL с синтаксисом и примерами.

Что такое foreign keys with cascade delete?

Foreign keys with cascade delete означает, что если удаляется запись в родительской таблице, то соответствующие записи в дочерней таблице будут удалены автоматически. Это называется каскадное удаление в Oracle.
Foreign keys with cascade delete может быть определен либо в операторе CREATE TABLE или операторе ALTER TABLE.

Использование CREATE TABLE

Синтаксис

Синтаксис для создания Foreign keys with cascade delete с помощью оператора CREATE TABLE в Oracle/PLSQL:

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)
ON DELETE CASCADE
);

Пример

Рассмотрим пример того, как создать foreign keys with cascade delete (внешний ключ с каскадным удалением) с помощью оператора CREATE TABLE в Oracle/PLSQL.

Например:

В этом примере мы создали primary key (первичный ключ) таблицы supplier под названием supplier_pk. Он состоит только из одного поля supplier_id. Затем мы создали foreign keys (внешний ключ) с названием fk_supplier в таблице products, который ссылается на таблицу supplier, на основании поля supplier_id.
Так, при каскадном удалении, когда удаляется запись в таблице supplier, также будут удалены все записи в таблице products, которые имеют одинаковое значение поля supplier_id.
Мы могли бы также создать foreign key (с каскадным удалением) с более чем одним полем, как в примере ниже:

В этом примере, наш foreign key называется fk_foreign_comp ссылается на таблицу supplier на основе двух полей supplier_id и supplier_name.
Каскадное удаление по внешнему ключу с названием fk_foreign_comp вызовет все соответствующие записи в таблице products, которые будут каскадно удалены, когда удалится запись в таблице supplier, основанная на полях supplier_id и supplier_name.

Использование ALTER TABLE

Синтаксис

Синтаксис для создания foreign keys with cascade delete с помощью оператора ALTER TABLE в Oracle/PLSQL:

ALTER TABLE table_name
ADD CONSTRAINT constraint_name
FOREIGN KEY (column1, column2, ... column_n)
REFERENCES parent_table (column1, column2, ... column_n)
ON DELETE CASCADE;

Пример

Рассмотрим пример того, как создать foreign keys with cascade delete с помощью оператора ALTER TABLE в Oracle/PLSQL.

Например:

В этом примере мы создали foreign keys (с каскадным удалением) под названием fk_supplier, который ссылается на таблицу supplier, основанную на поле supplier_id.
Мы могли бы также создать foreign keys (с каскадным удалением) с более чем одним полем, как в примере ниже: