Можно ли назначить поле UNIQUEIDENTIFIER автоматически при каждой вставке? - PullRequest
2 голосов
/ 26 мая 2011

У меня есть таблица, в которой у меня есть поле INT IDENTITY (1,1) PRIMARY KEY, а рядом с ним поле UNIQUEIDENTIFIER, которое я хотел бы автоматически назначать при каждой вставке в таблицу. Я попытался установить DEFAULT NEWID (), но он работает только в том случае, если я делаю INSERT INTO TableName VALUES (DEFAULT, a, b, c, d, ...).. Мне бы хотелось, чтобы я мог NSERT INTO TableName VALUES (a, b, c, d, ...), и поле UNIQUEIDENTIFIER автоматически назначалось так же, как поле первичного ключа. Это возможно? Пожалуйста, обратите внимание, что, хотя это допустимо, я не хочу, чтобы это поле было (частью а) первичным ключом таблицы.

Ответы [ 3 ]

4 голосов
/ 26 мая 2011

Затем используйте список столбцов и пропустите столбцы PK, GUID

INSERT INTO TableName (col3, col4, col5, ...)
VALUES (a, b, c, d, ...) a

Использование DEFAULT позволяет обойтись без списка столбцов, что в любом случае является наилучшей практикой.Например, что если вы измените порядок или добавите столбцы?И использование триггера не является оптимальным или масштабируемым

Редактировать: Использование триггера - это обходной путь, чтобы избежать наилучшей практики ... и не будет масштабироваться слишком хорошо

1 голос
/ 30 июня 2012

Гбн прав. Я просто добавлю пару других моментов, которые вы должны рассмотреть.

Если у вас есть уникальный идентификатор на вашем столе, то зачем вам нужен или нужен UNIQUEIDENTIFIER? Вы, вероятно, должны выбрать один или другой в качестве ПК, но не оба. Кроме того, при выборе значения по умолчанию для базы данных выберите NEWSEQUENTIALID () вместо NEWID ().

0 голосов
/ 26 мая 2011

Это должно быть значение по умолчанию в схеме таблицы. Таким образом, вам не нужно беспокоиться об этом столбце после установки значения по умолчанию.

Откройте окно дизайна таблицы и выберите столбец, который должен занимать информацию GUID. Для получения дополнительной информации см. Ниже снимок экрана.

enter image description here

Таким образом, установив (newID ()) в качестве значения по умолчанию, вы сможете вставить запись без включения имени этого столбца в оператор вставки.

Пожалуйста, дайте мне знать, если возникнет путаница

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