Поделиться через


Создание и изменение ограничений PRIMARY KEY

При создании таблицы в ее определении может быть указано одно ограничение PRIMARY KEY. Если таблица уже существует, ограничение PRIMARY KEY может быть добавлено только в том случае, если для таблицы еще не определено ни одного такого ограничения. У таблицы может быть только одно ограничение PRIMARY KEY.

Если ограничение PRIMARY KEY уже существует, его можно изменить или удалить. Например, может потребоваться, чтобы ограничение PRIMARY KEY ссылалось на другие столбцы, или нужно изменение порядка столбцов, имени индекса, параметров кластеризации или коэффициента заполнения. Но длину столбца, определенного с ограничением PRIMARY KEY, изменить нельзя.

ms181043.note(ru-ru,SQL.90).gifПримечание.
Чтобы изменить ограничение PRIMARY KEY, необходимо сначала удалить существующее ограничение PRIMARY KEY, а затем создать новое с другим определением.

Если ограничение PRIMARY KEY добавляется к существующему столбцу или столбцам таблицы, компонент SQL Server 2005 Database Engine проверяет данные и метаданные этих столбцов, чтобы проверить их соответствие следующим правилам:

  • Столбцы не должны допускать значений NULL.
    Столбцы ограничения PRIMARY KEY, указанного при создании таблицы, неявно преобразуются в NOT NULL.
  • В них не должно быть повторяющихся значений.
    Если ограничение PRIMARY KEY добавляется к столбцу, который содержит повторяющиеся значения или допускает значения NULL, компонент Database Engine возвращает ошибку и ограничение не создается.

Ограничение PRIMARY KEY не может быть добавлено к столбцам, нарушающим перечисленные правила.

Компонент Database Engine автоматически создает уникальный индекс, чтобы гарантировать уникальность ограничения PRIMARY KEY. Если для таблицы не существует кластеризованный индекс и явно не указан некластеризованный, то для ограничения PRIMARY KEY создается уникальный кластеризованный индекс.

Ограничение PRIMARY KEY не может быть удалено в следующих случаях:

  • Если на него ссылается ограничение FOREIGN KEY из другой таблицы. Сначала должно быть удалено ограничение FOREIGN KEY.
  • К таблице применен индекс PRIMARY XML.

Создание ограничения PRIMARY KEY при создании таблицы

CREATE TABLE (Transact-SQL)

Создание ограничения PRIMARY KEY в существующей таблице

ALTER TABLE (Transact-SQL)

Как создать первичные ключи (визуальные инструменты для баз данных)

Как удалить первичные ключи (визуальные инструменты для баз данных)

Получение сведений об ограничениях PRIMARY KEY

sys.key_constraints (Transact-SQL)

См. также

Основные понятия

Ограничения PRIMARY KEY

Справка и поддержка

Получение помощи по SQL Server 2005