В этом учебном пособии вы узнаете, как использовать проверку ограничений (check constraints) в Oracle с синтаксисом и примерами.
Описание
Проверка ограничений позволяет указать условие для каждой строки таблицы.
Примечание
- Проверка ограничений НЕ может быть определена в SQL View.
- Проверка ограничений, определенная в таблице, должна ссылаться только на столбцы в этой таблице. Она не может ссылаться на столбцы в других таблицах.
- Проверка ограничений НЕ может подключать SQL-подзапрос.
- Проверка ограничений может быть определена в SQL CREATE TABLE или SQL ALTER TABLE.
Использование оператора CREATE TABLE
Синтаксис для создания проверки ограничений с использованием оператора CREATE TABLE в Oracle:
(
column1 datatype null/not null,
column2 datatype null/not null,
...
CONSTRAINT constraint_name CHECK (column_name condition) [DISABLE]
);
Ключевое слово DISABLE является необязательным. Если вы создаете проверку ограничений с помощью ключевого слова DISABLE, ограничение будет создано, но условие не будет принудительно выполнено.
Пример
1 2 3 4 5 6 7 |
CREATE TABLE suppliers ( supplier_id numeric(4), supplier_name varchar2(50), CONSTRAINT check_supplier_id CHECK (supplier_id BETWEEN 100 and 9999) ); |
В этом первом примере мы создали проверку ограничений check_supplier_id в таблице suppliers. Это ограничение гарантирует, что поле vend_id содержит значения от 100 до 999.
1 2 3 4 5 6 7 |
CREATE TABLE suppliers ( supplier_id numeric(4), supplier_name varchar2(50), CONSTRAINT check_supplier_name CHECK (supplier_name = upper(supplier_name)) ); |
В этом втором примере мы создали проверку ограничений с именем check_supplier_name. Это ограничение гарантирует, что столбец supplier_name всегда будет содержать символы в верхнем регистре.
Использование оператора ALTER TABLE
Синтаксис для создания проверки ограничений в выражении ALTER TABLE в Oracle:
ADD CONSTRAINT constraint_name CHECK (column_name condition) [DISABLE];
Ключевое слово DISABLE является необязательным. Если вы создаете проверку ограничений с помощью ключевого слова DISABLE, ограничение будет создано, но условие не будет принудительно выполнено.
Пример
1 2 3 |
ALTER TABLE suppliers ADD CONSTRAINT check_supplier_name CHECK (supplier_name IN ('Apple', 'DELL', 'Nec')); |
В этом примере мы создали проверку ограничений check_supplier_name в существующей таблице suppliers. check_supplier_name гарантирует, что поле supplier_name содержит только следующие значения: Apple, DELL или Nec.
Удаление проверки ограничений
Синтаксис для удаления проверки ограничений:
DROP CONSTRAINT constraint_name;
Пример
1 2 |
ALTER TABLE suppliers DROP CONSTRAINT check_supplier_id; |
В этом примере мы удаляем проверку ограничений check_supplier_id для таблицы suppliers.
Включение проверки ограничений
Синтаксис включения проверки ограничений в Oracle:
ENABLE CONSTRAINT constraint_name;
Пример
1 2 |
ALTER TABLE suppliers ENABLE CONSTRAINT check_supplier_id; |
В этом примере мы включаем проверку ограничений с именем check_supplier_id для таблицы suppliers.
Отключение проверки ограничений
Синтаксис отключения проверки ограничений в Oracle:
DISABLE CONSTRAINT constraint_name;
Пример
1 2 |
ALTER TABLE suppliers DISABLE CONSTRAINT check_supplier_id; |
В этом примере мы отключили проверку ограничений с именем check_supplier_id для таблицы suppliers.