Работа с внешними ключами в PL/SQL: примеры и код

«Внешний ключ PL/SQL» относится к концепции использования внешних ключей в PL/SQL, который представляет собой процедурный язык, используемый в базах данных Oracle. Внешний ключ — это столбец или набор столбцов в таблице, который ссылается на первичный ключ другой таблицы. Он устанавливает связь между двумя таблицами, обеспечивая целостность данных и поддерживая ссылочную целостность.

Вот несколько методов работы с внешними ключами в PL/SQL, а также примеры кода:

  1. Создание таблицы с ограничением внешнего ключа:

    CREATE TABLE employees (
    emp_id NUMBER PRIMARY KEY,
    emp_name VARCHAR2(100),
    dept_id NUMBER,
    CONSTRAINT fk_dept_id FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
    );

    В этом примере таблица «Сотрудники» имеет ограничение внешнего ключа для столбца «dept_id», ссылающееся на столбец первичного ключа «dept_id» в таблице «отделы».

  2. Вставка данных в таблицу с внешним ключом:

    INSERT INTO employees (emp_id, emp_name, dept_id)
    VALUES (1, 'John Doe', 123);

    Здесь мы вставляем нового сотрудника в таблицу «Сотрудники», указывая идентификатор сотрудника, имя и идентификатор отдела. Ограничение внешнего ключа гарантирует, что указанный идентификатор отдела существует в таблице “departments”.

  3. Обновление таблицы с помощью внешнего ключа:

    UPDATE employees
    SET dept_id = 456
    WHERE emp_id = 1;

    Этот оператор обновляет идентификатор отдела сотрудника с идентификатором 1. Ограничение внешнего ключа гарантирует, что обновленный идентификатор отдела существует в таблице «departments».

  4. Удаление данных из таблицы с помощью внешнего ключа:

    DELETE FROM employees
    WHERE emp_id = 1;

    Этот оператор удаляет сотрудника из таблицы «Сотрудники». Если в других таблицах есть какие-либо связанные записи, имеющие внешний ключ, ссылающийся на удаленного сотрудника, операция удаления завершится неудачей из-за ограничения внешнего ключа.

  5. Отключение и включение ограничений внешнего ключа:

    ALTER TABLE employees
    DISABLE CONSTRAINT fk_dept_id;
    ALTER TABLE employees
    ENABLE CONSTRAINT fk_dept_id;

    Эти операторы отключают и включают ограничение внешнего ключа «fk_dept_id» в таблице «сотрудники» соответственно. Отключение ограничения позволяет выполнять операции, которые в противном случае нарушили бы ограничение, например удаление записей без проверки указанной таблицы.