Уникальные ограничения Oracle PL/SQL

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

Описание

Уникальное ограничение - это одно поле или комбинация полей, которые однозначно определяют запись. Некоторые из полей могут содержать нулевые значения, если комбинация значений уникальна.

Примечание

  • В Oracle уникальное ограничение не может содержать более 32 столбцов.
  • Уникальное ограничение может быть определено либо в операторе CREATE TABLE, либо в операторе ALTER TABLE.

Рассмотрим разницу между уникальным ограничением и первичным ключом.

Первичный ключ

Поля, которые являются частью первичного ключа, не могут содержать нулевое значение.

Уникальное ограничение

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

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

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

Синтаксис:

CREATE TABLE table_name
(
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.

В этом примере мы создали уникальное ограничение supplier_unique для таблицы supplier. Оно состоит только из одного поля - поля supplier_id.

Мы также могли бы создать уникальное ограничение с несколькими полями, как в приведенном ниже примере:

Создание уникального ограничения с использованием оператора ALTER TABLE

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

ALTER TABLE table_name
ADD CONSTRAINT constraint_name UNIQUE (column1, column2, ... column_n);

table_name - имя таблицы для изменения. Это таблица, к которой вы хотите добавить уникальное ограничение.
constraint_name - имя уникального ограничения.
column1, column2, ... column_n - столбцы, которые составляют уникальное ограничение.

Пример

Рассмотрим пример того, как добавлять уникальное ограничение в существующую таблицу в Oracle, используя оператор ALTER TABLE.

В этом примере мы создали уникальное ограничение для существующей таблицы supplier, называемое supplier_unique. Оно состоит из поля, с именем supplier_id.

Мы могли бы также создать уникальное ограничение с несколькими полями, как в приведенном примере ниже:

Удалить уникальное ограничение

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

ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

table_name - имя таблицы для изменения. Это таблица, из которой вы хотите удалить уникальное ограничение.
constraint_name - имя уникального ограничения для удаления.

Пример

Рассмотрим пример того, как удалить уникальное ограничение из таблицы в Oracle.

В этом примере мы удалили уникальное ограничение supplier_unique для таблицы supplier.

Отключение уникального ограничения

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

ALTER TABLE table_name
DISABLE CONSTRAINT constraint_name;

table_name - имя таблицы для изменения. Это таблица, уникальное ограничение которой, вы хотите отключить.
constraint_name - имя уникального ограничения для отключения.

Пример

Рассмотрим пример того, как отключить уникальное ограничение в Oracle.

В этом примере мы отключили уникальное ограничение supplier_unique для таблицы supplier.

Включение уникального ограничения

Синтаксис для включения уникального ограничения в Oracle:

ALTER TABLE table_name
ENABLE CONSTRAINT constraint_name;

table_name - имя таблицы для изменения. Это таблица, уникальное ограничение которой, вы хотите включить.
constraint_name - имя уникального ограничения для включения.

Пример

Рассмотрим пример того, как включить уникальное ограничение в Oracle.

В этом примере мы включаем уникальное ограничение supplier_unique для таблицы supplier.