В этом учебном пособии вы узнаете, как создавать, удалять, отключать, и включать unique constraints (уникальные ограничения) в Oracle с синтаксисом и примерами.
Описание
Уникальное ограничение - это одно поле или комбинация полей, которые однозначно определяют запись. Некоторые из полей могут содержать нулевые значения, если комбинация значений уникальна.
Примечание
- В Oracle уникальное ограничение не может содержать более 32 столбцов.
- Уникальное ограничение может быть определено либо в операторе CREATE TABLE, либо в операторе ALTER TABLE.
Рассмотрим разницу между уникальным ограничением и первичным ключом.
Первичный ключ
Поля, которые являются частью первичного ключа, не могут содержать нулевое значение.
Уникальное ограничение
Поля, которые являются частью уникального ограничения, могут содержать нулевые значения, если комбинация значений уникальна.
Oracle не позволяет создавать как первичный ключ, так и уникальное ограничение с одинаковыми столбцами.
Создание уникального ограничения с использованием оператора CREATE TABLE
Синтаксис:
(
column1 datatype [ NULL | NOT NULL ],
column2 datatype [ NULL | NOT NULL ],
...
CONSTRAINT constraint_name UNIQUE (uc_col1, uc_col2, ... uc_col_n)
);
table_name - имя таблицы, которую вы хотите создать.
column1, column2 - столбцы, которые вы хотите создать в таблице.
constraint_name - имя уникального ограничения.
uc_col1, uc_col2, ... uc_col_n - столбцы, которые составляют уникальное ограничение.
Пример
Рассмотрим пример создания уникального ограничения в Oracle с помощью оператора CREATE TABLE.
1 2 3 4 5 6 |
CREATE TABLE supplier ( supplier_id numeric(10) NOT NULL, supplier_name varchar2(50) NOT NULL, contact_name varchar2(50), CONSTRAINT supplier_unique UNIQUE (supplier_id) ); |
В этом примере мы создали уникальное ограничение supplier_unique для таблицы supplier. Оно состоит только из одного поля - поля supplier_id.
Мы также могли бы создать уникальное ограничение с несколькими полями, как в приведенном ниже примере:
1 2 3 4 5 6 |
CREATE TABLE supplier ( supplier_id numeric(10) NOT NULL, supplier_name varchar2(50) NOT NULL, contact_name varchar2(50), CONSTRAINT supplier_unique UNIQUE (supplier_id, supplier_name) ); |
Создание уникального ограничения с использованием оператора ALTER TABLE
Синтаксис создания уникального ограничения с использованием оператора ALTER TABLE в Oracle:
ADD CONSTRAINT constraint_name UNIQUE (column1, column2, ... column_n);
table_name - имя таблицы для изменения. Это таблица, к которой вы хотите добавить уникальное ограничение.
constraint_name - имя уникального ограничения.
column1, column2, ... column_n - столбцы, которые составляют уникальное ограничение.
Пример
Рассмотрим пример того, как добавлять уникальное ограничение в существующую таблицу в Oracle, используя оператор ALTER TABLE.
1 2 |
ALTER TABLE supplier ADD CONSTRAINT supplier_unique UNIQUE (supplier_id); |
В этом примере мы создали уникальное ограничение для существующей таблицы supplier, называемое supplier_unique. Оно состоит из поля, с именем supplier_id.
Мы могли бы также создать уникальное ограничение с несколькими полями, как в приведенном примере ниже:
1 2 |
ALTER TABLE supplier ADD CONSTRAINT supplier_name_unique UNIQUE (supplier_id, supplier_name); |
Удалить уникальное ограничение
Синтаксис для удаления уникального ограничения в Oracle:
DROP CONSTRAINT constraint_name;
table_name - имя таблицы для изменения. Это таблица, из которой вы хотите удалить уникальное ограничение.
constraint_name - имя уникального ограничения для удаления.
Пример
Рассмотрим пример того, как удалить уникальное ограничение из таблицы в Oracle.
1 2 |
ALTER TABLE supplier DROP CONSTRAINT supplier_unique; |
В этом примере мы удалили уникальное ограничение supplier_unique для таблицы supplier.
Отключение уникального ограничения
Синтаксис отключения уникального ограничения в Oracle:
DISABLE CONSTRAINT constraint_name;
table_name - имя таблицы для изменения. Это таблица, уникальное ограничение которой, вы хотите отключить.
constraint_name - имя уникального ограничения для отключения.
Пример
Рассмотрим пример того, как отключить уникальное ограничение в Oracle.
1 2 |
ALTER TABLE supplier DISABLE CONSTRAINT supplier_unique; |
В этом примере мы отключили уникальное ограничение supplier_unique для таблицы supplier.
Включение уникального ограничения
Синтаксис для включения уникального ограничения в Oracle:
ENABLE CONSTRAINT constraint_name;
table_name - имя таблицы для изменения. Это таблица, уникальное ограничение которой, вы хотите включить.
constraint_name - имя уникального ограничения для включения.
Пример
Рассмотрим пример того, как включить уникальное ограничение в Oracle.
1 2 |
ALTER TABLE supplier ENABLE CONSTRAINT supplier_unique; |
В этом примере мы включаем уникальное ограничение supplier_unique для таблицы supplier.