В этом учебном пособии вы узнаете, как создавать, добавлять и удалять уникальные ограничения в PostgreSQL с синтаксисом и примерами.
Что такое уникальное ограничение в PostgreSQL?
Уникальное ограничение - это отдельное поле или комбинация полей, которые однозначно определяют запись. Некоторые поля могут содержать нулевые значения, если комбинация значений уникальна.
В чем разница между уникальным ограничением и первичным ключом?
Первичным ключ | Уникальное ограничение |
---|---|
Ни одно из полей, которые являются частью первичного ключа, не может содержать нулевое значение. | Некоторые поля, являющиеся частью ограничения уникальности, могут содержать нулевые значения, если комбинация значений уникальна. |
Создать уникальное ограничение - использование оператора CREATE TABLE
Синтаксис для создания уникального ограничения с помощью оператора CREATE TABLE в PostgreSQL:
1 2 3 4 5 6 7 8 |
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
- Столбцы, составляющие уникальное ограничение.
Пример
Рассмотрим пример того, как создать уникальное ограничение в PostgreSQL с помощью оператора CREATE TABLE.
1 2 3 4 5 6 7 8 |
CREATE TABLE order_details ( order_detail_id integer CONSTRAINT order_details_pk PRIMARY KEY, order_id integer NOT NULL, order_date date, quantity integer, notes varchar(200), CONSTRAINT order_unique UNIQUE (order_id) ); |
В этом примере мы создали уникальное ограничение для таблицы order_details под названием order_unique. Оно состоит только из одного поля - order_id.
Мы также можем создать уникальное ограничение с более чем одним полем, как в примере ниже:
1 2 3 4 5 6 7 8 |
CREATE TABLE order_details ( order_detail_id integer CONSTRAINT order_details_pk PRIMARY KEY, order_id integer NOT NULL, order_date date, quantity integer, notes varchar(200), CONSTRAINT order_date_unique UNIQUE (order_id, order_date) ); |
Создать уникальное ограничение - используя оператор ALTER TABLE
Синтаксис для создания уникального ограничения с помощью оператора ALTER TABLE в PostgreSQL:
1 2 |
ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (column1, column2,... column_n); |
- table_name
- Имя таблицы для изменения. Это таблица, к которой вы хотите добавить уникальное ограничение.
- constraint_name
- Имя уникального ограничения.
- column1, column2,... column_n
- Столбцы, составляющие уникальное ограничение.
Пример
Рассмотрим пример того, как добавить уникальное ограничение к существующей таблице в PostgreSQL, используя оператор ALTER TABLE.
1 2 |
ALTER TABLE order_details ADD CONSTRAINT order_unique UNIQUE (order_id); |
В этом примере мы создали уникальное ограничение для существующей таблицы order_details с именем order_unique. Он состоит из поля с именем order_id.
Мы также можем создать уникальное ограничение с более чем одним полем, как в примере ниже:
1 2 |
ALTER TABLE order_details ADD CONSTRAINT order_date_unique UNIQUE (order_id, order_date); |
Удалить уникальное ограничение
Синтаксис для удаления уникального ограничения в PostgreSQL:
1 2 |
ALTER TABLE table_name DROP CONSTRAINT constraint_name; |
- table_name
- Имя таблицы для изменения. Это таблица, из которой вы хотите удалить уникальное ограничение.
- constraint_name
- Имя уникального ограничения для удаления.
Пример
Рассмотрим пример того, как удалить уникальное ограничение из таблицы в PostgreSQL.
1 2 |
ALTER TABLE order_details DROP CONSTRAINT order_unique; |
В этом примере мы отбрасываем уникальное ограничение на таблицу order_details с именем order_unique.