Как получить что-то похожее на тип данных SERIAL PG в SQL Server 2008? - PullRequest
0 голосов
/ 06 февраля 2009

Я помогаю реализовать базу данных SQL Server 2008, и у меня есть несколько столбцов, которые я хотел бы установить по умолчанию для следующего числа в последовательности, но все же смогу вставлять числа в него вручную по своему усмотрению. В PostgreSQL это делается с типом данных SERIAL и последовательностью. К сожалению, эти вещи не существуют в SQL Server. Вот то, что я знаю, не сработает.

  1. Столбец идентификации не допускает вставки, если вы не установили IDENTITY_INSERT на. В этом случае он работает как нужно, но в соответствии с MSDN это свойство может быть установлено только для одной таблицы за раз, и я хотел бы сделать это для нескольких таблиц.
  2. Функция может быть установлена ​​в качестве значения по умолчанию для поля, но, поскольку функция не может устанавливать значения в базе данных, нет способа обновить счетчик после установки текущего значения.
  3. Хранимая процедура может использоваться для увеличения числа и его возврата, но они не могут быть установлены в качестве значения по умолчанию для столбца.

Обходной путь, который я сейчас создал, состоит в том, чтобы просто создать хранимую процедуру, которая возвращает желаемое значение, и кодировать его в API LINQ, чтобы это происходило автоматически. Это дает некоторый шаблонный код, который я хотел бы удалить.

Возможно ли то, что я хочу, даже в SQL Server?

Ответы [ 2 ]

0 голосов
/ 06 февраля 2009

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

Альтернативой, если вы действительно хотите построить полный граф объектов в памяти и затем сохранить его за один раз, является использование идентификаторов GUID, но у них есть свои недостатки.

0 голосов
/ 06 февраля 2009

Нет. Колонка идентичности или ваш собственный список - это, по сути, ваш выбор.

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