Primary Key in PostgreSQL
Primary key в PostgreSQL (и во всех реляционных базах данных) является уникальным идентификатором для каждой записи в таблице. Ключевая особенность primary key заключается в том, что она гарантирует уникальность значений и предоставляет быстрый доступ к данным.
В PostgreSQL primary key может быть создан с использованием одного или нескольких столбцов таблицы. Обычно для создания primary key используется один столбец, который имеет уникальное значение для каждой записи. Например, создадим таблицу "users" с primary key на столбце "id":
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(50)
);
В данном примере используется столбец "id" с типом данных SERIAL, который автоматически увеличивается при вставке новой записи. Директива PRIMARY KEY указывает, что этот столбец будет использоваться как primary key.
Запрос на создание таблицы выше создаст таблицу "users" с primary key на столбце "id". Теперь мы можем вставить данные в таблицу и гарантированно знать, что каждая запись будет иметь уникальное значение в столбце "id":
INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com');
INSERT INTO users (name, email) VALUES ('Jane Smith', 'jane@example.com');
Если мы попытаемся вставить запись с тем же значением primary key, PostgreSQL вернет ошибку:
INSERT INTO users (id, name, email) VALUES (1, 'Another User', 'user@example.com');
ERROR: duplicate key value violates unique constraint "users_pkey"
DETAIL: Key (id)=(1) already exists.
Primary key также может быть составным, то есть использовать несколько столбцов. Например, создадим таблицу "orders" с primary key на столбцах "order_id" и "user_id":
CREATE TABLE orders (
order_id INT,
user_id INT,
order_date DATE,
PRIMARY KEY (order_id, user_id)
);
Данный пример создаст таблицу "orders" с составным primary key на столбцах "order_id" и "user_id". Это означает, что комбинация значений этих двух столбцов должна быть уникальной для каждой записи.
В итоге, использование primary key в PostgreSQL обеспечивает уникальность и быстрый доступ к данным, а также может быть создано на одном или нескольких столбцах таблицы.