Проверка ограничений Oracle PL/SQL

В этом учебном пособии вы узнаете, как использовать проверку ограничений (check constraints) в Oracle с синтаксисом и примерами.

Описание

Проверка ограничений позволяет указать условие для каждой строки таблицы.

Примечание

  • Проверка ограничений НЕ может быть определена в SQL View.
  • Проверка ограничений, определенная в таблице, должна ссылаться только на столбцы в этой таблице. Она не может ссылаться на столбцы в других таблицах.
  • Проверка ограничений НЕ может подключать SQL-подзапрос.
  • Проверка ограничений может быть определена в SQL CREATE TABLE или SQL ALTER TABLE.

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

Синтаксис для создания проверки ограничений с использованием оператора CREATE TABLE в Oracle:

CREATE TABLE table_name
(
column1 datatype null/not null,
column2 datatype null/not null,

...

CONSTRAINT constraint_name CHECK (column_name condition) [DISABLE]

);

Ключевое слово DISABLE является необязательным. Если вы создаете проверку ограничений с помощью ключевого слова DISABLE, ограничение будет создано, но условие не будет принудительно выполнено.

Пример

В этом первом примере мы создали проверку ограничений check_supplier_id в таблице suppliers. Это ограничение гарантирует, что поле vend_id содержит значения от 100 до 999.

В этом втором примере мы создали проверку ограничений с именем check_supplier_name. Это ограничение гарантирует, что столбец supplier_name всегда будет содержать символы в верхнем регистре.

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

Синтаксис для создания проверки ограничений в выражении ALTER TABLE в Oracle:

ALTER TABLE table_name
ADD CONSTRAINT constraint_name CHECK (column_name condition) [DISABLE];

Ключевое слово DISABLE является необязательным. Если вы создаете проверку ограничений с помощью ключевого слова DISABLE, ограничение будет создано, но условие не будет принудительно выполнено.

Пример

В этом примере мы создали проверку ограничений check_supplier_name в существующей таблице suppliers. check_supplier_name гарантирует, что поле supplier_name содержит только следующие значения: Apple, DELL или Nec.

Удаление проверки ограничений

Синтаксис для удаления проверки ограничений:

ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

Пример

В этом примере мы удаляем проверку ограничений check_supplier_id для таблицы suppliers.

Включение проверки ограничений

Синтаксис включения проверки ограничений в Oracle:

ALTER TABLE table_name
ENABLE CONSTRAINT constraint_name;

Пример

В этом примере мы включаем проверку ограничений с именем check_supplier_id для таблицы suppliers.

Отключение проверки ограничений

Синтаксис отключения проверки ограничений в Oracle:

ALTER TABLE table_name
DISABLE CONSTRAINT constraint_name;

Пример

В этом примере мы отключили проверку ограничений с именем check_supplier_id для таблицы suppliers.