Ограничение с первичным ключом - PullRequest
4 голосов
/ 19 апреля 2011

Есть ли разница между этими двумя фрагментами таблицы? Один включает ключевое слово CONSTRAINT, другой нет.

CREATE TABLE [dbo].[Person](
    [ID] [bigint] NOT NULL,
    [Name] [varchar](255) NOT NULL,
PRIMARY KEY CLUSTERED ([ID] ASC))


CREATE TABLE [dbo].[Person](
    [ID] [bigint] NOT NULL,
    [Name] [varchar](255) NOT NULL,
CONSTRAINT [PK_Person] PRIMARY KEY CLUSTERED ([ID] ASC))

У меня есть база данных с таблицами, определенными обоими способами, мне интересно, должен ли я что-то с этим сделать.

Ответы [ 2 ]

8 голосов
/ 19 апреля 2011

Нет разницы, кроме именования ограничения. Если вы не укажете его, SQL Server создаст его для вас, но имя ограничения НЕ легко распознать.

Я бы предпочел дать всем моим объектам базы данных хорошие соглашения об именах вместо того, чтобы полагаться на имена, сгенерированные SQL Engine.

0 голосов
/ 19 апреля 2011

Часть CONSTRAINT [PK_Person] необязательна. Вы можете прочитать больше об этом здесь ; со страницы MSDN:

CONSTRAINT

Необязательное ключевое слово, обозначающее начало первичного ключа, а не NULL, УНИКАЛЬНЫЙ, ИНОСТРАННЫЙ КЛЮЧ или ПРОВЕРКА определение ограничения. Ограничения специальные свойства, обеспечивающие выполнение данных целостность, и они могут создавать индексы для таблицы и ее столбцов.

...