PostgreSQL первичный ключ

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

Что такое первичный ключ в PostgreSQL?

В PostgreSQL первичный ключ - это отдельное поле или комбинация полей, которые однозначно определяют запись. Ни одно из полей, являющихся частью первичного ключа, не может содержать значение NULL. Таблица может иметь только один первичный ключ.

Примечание

  • В PostgreSQL первичный ключ создается с помощью оператора CREATE TABLE или оператора ALTER TABLE.
  • Вы используете оператор ALTER TABLE в PostgreSQL для добавления или удаления первичного ключа.

Создать первичный ключ - с помощью оператора CREATE TABLE

Вы можете создать первичный ключ в PostgreSQL с помощью оператора CREATE TABLE.

Синтаксис

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

CREATE TABLE table_name
(
column1 datatype [ NULL | NOT NULL ],
column2 datatype [ NULL | NOT NULL ],
...

CONSTRAINT constraint_name
PRIMARY KEY (index_col1, index_col2,... index_col_n)
);

ИЛИ

CREATE TABLE table_name
(
column1 datatype CONSTRAINT constraint_name PRIMARY KEY,
column2 datatype [ NULL | NOT NULL ],
...
);
table_name
Имя таблицы, которую вы хотите создать.
column1, column2
Столбцы, которые вы хотите создать в таблице.
constraint_name
Название первичного ключа.
index_col1, index_col2,... index_col_n
Столбцы, составляющие первичный ключ.

Пример

Рассмотрим пример того, как создать первичный ключ, используя оператор CREATE TABLE в PostgreSQL.

CREATE TABLE order_details
( order_detail_id integer NOT NULL,
order_id integer NOT NULL,
order_date date,
quantity integer,
notes varchar(200),
CONSTRAINT order_details_pk PRIMARY KEY (order_detail_id)
);

Или вы можете также создать первичный ключ в таблице order_details, используя следующий синтаксис:

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)
);

В этих двух примерах мы создали первичный ключ в таблице order_details с именем order_details_pk. Он состоит только из одного столбца - столбца order_detail_id.

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

CREATE TABLE order_details
( order_date date NOT NULL,
customer_id integer NOT NULL,
quantity integer,
notes varchar(200),
CONSTRAINT order_details_pk PRIMARY KEY (order_date, customer_id)
);

В этом примере создается первичный ключ с именем order_details_pk, который состоит из комбинации столбцов order_date и customer_id. Таким образом, каждая комбинация order_date и customer_id должна быть уникальной в таблице order_details.

Создать первичный ключ - используя оператор ALTER TABLE

Вы можете создать первичный ключ в PostgreSQL с помощью оператора ALTER TABLE.

Синтаксис

синтаксис для создания первичного ключа с помощью оператора ALTER TABLE в PostgreSQL:

ALTER TABLE table_name
ADD CONSTRAINT [ constraint_name ]
PRIMARY KEY (index_col1, index_col2,... index_col_n)
table_name
Имя таблицы для изменения.
constraint_name
Название первичного ключа.
index_col1, index_col2,... index_col_n
Столбцы, составляющие первичный ключ.

Пример

Рассмотрим пример того, как создать первичный ключ, используя оператор ALTER TABLE в PostgreSQL.

ALTER TABLE order_details
ADD CONSTRAINT order_details_pk
PRIMARY KEY (order_detail_id);

В этом примере мы создали первичный ключ для существующей таблицы order_details с именем order_details_pk. Он состоит из столбца order_detail_id.
Мы также можем создать первичный ключ с более чем одним полем, как в примере ниже:

ALTER TABLE order_details
ADD CONSTRAINT order_details_pk
PRIMARY KEY (order_date, customer_id);

В этом примере мы создали первичный ключ contacts_pk, который состоит из комбинации столбцов last_name и first_name.

Удалить первичный ключ

Вы можете удалить первичный ключ в PostgreSQL, используя оператор ALTER TABLE.

Синтаксис

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

ALTER TABLE table_name
DROP CONSTRAINT constraint_name;
table_name
Имя таблицы для изменения.
constraint_name
Имя первичного ключа, который вы хотите удалить.

Пример

Рассмотрим пример того, как удалить первичный ключ с помощью оператора ALTER TABLE в PostgreSQL.

ALTER TABLE order_details
DROP CONSTRAINT order_details_pk;

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