Какой GUID я могу использовать в качестве заполнителя - PullRequest
3 голосов
/ 23 января 2010

У меня есть таблица базы данных с ненулевым столбцом типа uniqueidentifier. Это было сделано для использования в ближайшем будущем. Но сейчас мне нужно использовать заполнитель. Могу ли я просто использовать:

00000000-0000-0000-0000-000000000000

для всех строк, пока не будет использован настоящий guid, когда в будущем будут вставлены новые строки? Обеспечивает ли SQL Server уникальность этого столбца?

Ответы [ 2 ]

7 голосов
/ 23 января 2010

SQL Server будет обеспечивать уникальность, IF , и только если вы наложите уникальное ограничение или уникальный индекс на это поле. В противном случае SQL Server будет принудительно устанавливать только значение NOT NULL.

2 голосов
/ 23 января 2010

Как говорит marc_s, вы можете сделать это, потому что уникальность не применяется для уникальных идентификаторов даже в одном и том же столбце таблицы без явно объявленного уникального индекса / ограничения (в конце концов, две строки могут по праву иметь один и тот же внешний ключ).

ЕСЛИ это всего лишь временный загрузчик, и в будущем будут разрешены только реальные GUID (НЕ NULL), я думаю, что это хороший обходной путь, чтобы избежать генерации GUID, которые просто необходимо заменены позже, и поэтому нет необходимости хранить отдельный частично инициализированный столбец флага или таблицу временных строк, чтобы вы могли заполнить соответствующие GUID позже.

Однако , с точки зрения дизайна, меня больше беспокоит семантика того, что представляет собой этот специальный зарезервированный GUID, и почему разрешение специального зарезервированного значения - это нормально, а NULL - нет. Как я уже сказал, если это просто временно и в стабильном состоянии, вы не хотите разрешать NULL ИЛИ этот специальный зарезервированный 0, это нормально, но если вы собираетесь продолжать разрешать этот специальный зарезервированный GUID в стационарных операциях, я думаю, что это вызывает вопросы дизайна.

Это должен быть внешний ключ? Если это так, могут использоваться значения NULL (но зарезервированное значение ключа, например 0, которого нет в ссылочной таблице, не может). Если это слабая ассоциация, хранение GUID в этой таблице может быть не лучшим решением.

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