Как Вы реализовали бы последовательности в Microsoft SQL Server?

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

33
задан Tony L. 28 September 2016 в 22:16
поделиться

6 ответов

При использовании SQL Server 2005, у Вас есть опция использования Row_Number

0
ответ дан 27 November 2019 в 17:42
поделиться

Если Вы хотите вставить данные с последовательным ключом, но Вы не хотите должными быть запрашивать базу данных снова для получения просто вставленного ключа, я думаю, что только два варианта:

  1. Выполняют вставку через хранимую процедуру, которая возвращает недавно вставленное значение ключа
  2. Реализация клиентская последовательность (так, чтобы Вы знали новый ключ перед вставкой)

, Если я делаю клиентскую генерацию ключей, я любовь GUID. Я думаю, что они красивы как heck.

row["ID"] = Guid.NewGuid();

, Что строка должна класть на капоте спортивного автомобиля где-нибудь.

0
ответ дан 27 November 2019 в 17:42
поделиться

Я полностью согласовываю и сделал это в прошлом году на проекте.

я просто составил таблицу с названием последовательности, текущего значения, & инкрементная сумма.

Затем я создал 2 procs для добавления & удалите их. И 2 функции для получения затем, & станьте текущими.

0
ответ дан 27 November 2019 в 17:42
поделиться

Последовательности, как реализовано Oracle требуют вызова к базе данных перед вставкой. идентификационные данные, как реализовано SQL Server требуют вызова к базе данных после вставки.

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

я предполагаю, что Ваша реляционная модель основана на искусственных ключах, и в этом контексте, я предложу следующее наблюдение:

Мы никогда не должны стремиться пропитать искусственные ключи со значением; их единственная цель должна быть к связанным со ссылкой записям.

, Что Ваша потребность связана с упорядочиванием данных? это может быть обработано в представлении (презентация), или действительно ли это - истинный атрибут Ваших данных, которые должны быть сохранены?

3
ответ дан 27 November 2019 в 17:42
поделиться

столбец Identity примерно походит на последовательность.

5
ответ дан 27 November 2019 в 17:42
поделиться

Вы могли просто использовать простые таблицы и использовать их в качестве последовательностей. Это означает, что Ваши вставки всегда были бы:

BEGIN TRANSACTION  
SELECT number from plain old table..  
UPDATE plain old table, set the number to be the next number  
INSERT your row  
COMMIT  

, Но не делают этого. Блокировка была бы плоха...

я запустил на SQL Server и мне, схема "последовательности" Oracle была похожа на взлом. Я предполагаю, что Вы происходите из другого направления и Вам, и scope_identity () похож на взлом.

Преобладают над ним.В чужой стране жить - чужой обычай любить.

5
ответ дан 27 November 2019 в 17:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: