Почему мое уникальное ограничение отображается под индексами, а не под ограничениями? - PullRequest
0 голосов
/ 18 июня 2009

Я создал ограничение для моей таблицы tsql следующим образом:

alter table disabledqualities
add constraint uc_uIdQualCode
unique (userId, qualitycode)

В MSSMStudio ограничение отображается под индексами, а не под ограничениями.

Почему?

- EDIT -
Я понимаю, что он создает индекс для применения ограничения, но тогда почему существует узел с именем "ограничения"?

Ответы [ 7 ]

4 голосов
/ 18 июня 2009

SQL Server создает индекс за сценой для применения ограничения

вот еще один способ написать, что, добавляя некластеризованный сервер SQL, говорящий об использовании некластеризованного индекса, вы также можете создать кластеризованный при условии, что у вас нет кластеризованного PK (по умолчанию) или другого кластерного индекса.

alter table disabledqualities
add constraint uc_uIdQualCode
unique nonclustered (userId, qualitycode)

[править] этот узел должен добавить проверочное ограничение, уникальные ограничения добавляются по индексам

в любом случае держись подальше от волшебников

1 голос
/ 18 июня 2009

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

0 голосов
/ 18 июня 2009

Я думаю, что, возможно, вы не понимаете, что может отображаться в ограничениях, потому что вы не знаете, что такое проверочное ограничение. Проверочное ограничение будет проверять данные при вставке или обновлении, чтобы определить, соответствует ли оно какому-либо бизнес-правилу. Он используется для обеспечения целостности данных. Например, если у вас есть целочисленное поле, которое должно содержать только значения 1,4 или 5, вы должны установить проверочное ограничение, чтобы убедиться, что 9 никогда не добавляется в поле. Проверочное ограничение для поля даты может указывать, что оно должно быть позже текущей даты и времени для поля, которое является PlannedCompletionDate, или что CompletionDate должно быть позже StartDate. Это те вещи, которые проявляются при ограничениях.

0 голосов
/ 18 июня 2009

Поскольку в системном представлении sysindexes можно найти УНИКАЛЬНЫЕ ограничения

выберите * из sysindexes, где name = 'uc_uIdQualCode'

Это просто логично Чтобы добавить новый уникальный контент из Studio, вам нужно нажать кнопку «Управление индексом и ключами». Так что, если вы добавляете его из индексов, вы должны увидеть его в индексах:)

0 голосов
/ 18 июня 2009

Верный ответ: «потому что Microsoft так сказала. Если вы хотите получить ответ, вам нужно будет их спросить».

0 голосов
/ 18 июня 2009

Я понимаю, что он создает индекс для применения ограничения, но тогда почему существует узел с именем "ограничения"?

Этот узел должен отображать CHECK ограничений.

0 голосов
/ 18 июня 2009

SQL использует индексы для обеспечения уникальных ограничений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...