В этом руководстве вы узнаете, как использовать ограничение SQL Server PRIMARY KEY для создания первичного ключа для таблицы.
Введение в ограничение первичного ключа SQL Server
Первичный ключ — это столбец или группа столбцов, которые уникально идентифицируют каждую строку в таблице. Первичный ключ для таблицы создается с помощью ограничения PRIMARY KEY.
Если первичный ключ состоит только из одного столбца, можно определить ограничение PRIMARY KEY в качестве ограничения столбца:
CREATE TABLE table_name( pk_column data_type PRIMARY KEY, ... );
Если первичный ключ имеет два или более столбцов, необходимо использовать ограничение PRIMARY KEY в качестве ограничения таблицы:
CREATE TABLE table_name( pk_column_1 data_type, pk_column_2 data type, ... PRIMARY KEY(pk_column_1, pk_column_2) );
Каждая таблица может содержать только один первичный ключ. Все столбцы, участвующие в первичном ключе, должны быть определены как NOT NULL. SQL Server автоматически устанавливает ограничение NOT NULL для всех столбцов первичного ключа, если ограничение NOT NULL не указано для этих столбцов.
SQL Server также автоматически создает уникальный кластеризованный индекс(или некластеризованный индекс, если таковой указан) при создании первичного ключа.
Примеры ограничений первичного ключа SQL Server
В следующем примере создается таблица с первичным ключом, состоящим из одного столбца:
CREATE TABLE sales.activities( activity_id INT PRIMARY KEY IDENTITY, activity_name VARCHAR(255) NOT NULL, activity_date DATE NOT NULL );
В этой таблице sales.activities столбец activity_id является первичным ключевым столбцом. Это означает, что столбец activity_id содержит уникальные значения.
Свойство IDENTITY используется для столбца activity_id для автоматической генерации уникальных целочисленных значений.
Следующий оператор создает новую таблицу с именем sales.participants, первичный ключ которой состоит из двух столбцов:
CREATE TABLE sales.participants( activity_id int, customer_id int, PRIMARY KEY(activity_id, customer_id) );
В этом примере значения в столбце activity_id или customer_id могут дублироваться, но каждая комбинация значений из обоих столбцов должна быть уникальной.
Обычно таблица всегда имеет первичный ключ, определенный во время создания. Однако иногда существующая таблица может не иметь определенного первичного ключа. В этом случае вы можете добавить первичный ключ в таблицу с помощью оператора ALTER TABLE. Рассмотрим следующий пример:
Следующий оператор создает таблицу без первичного ключа:
CREATE TABLE sales.events( event_id INT NOT NULL, event_name VARCHAR(255), start_date DATE NOT NULL, duration DEC(5,2) );
Чтобы сделать столбец event_id первичным ключом, используйте следующий оператор ALTER TABLE:
ALTER TABLE sales.events ADD PRIMARY KEY(event_id);
Обратите внимание: если в таблице sales.events уже есть данные, то перед тем, как сделать столбец event_id первичным ключом, необходимо убедиться, что значения в event_id уникальны.
В этом руководстве вы узнали, как использовать ограничение SQL Server PRIMARY KEY для создания первичного ключа для таблицы.