Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Некорректное заполнение столбца идентификаторов при инсёрте данных  [new]
Сергей Будылин
Member

Откуда:
Сообщений: 7
Доброго времени суток. Подскажите пожалуйста кто знает в чем может быть причина.
Использую SQL Manager 2008 fro SQL Server.
Создаю новую таблицу со столбцом идентефикаторов, указываю начальное значение - 1, инкремент - 1.
Далее записываю в нее данные запросом вида:

insert into peny.peny (id_customer, period_calc)
  values (@id_customer, @period_calc)


При этом столбец идентификаторов заполняется почему то не с еденицы, а со значения равного = Максимальное значение идентификатора в таблице + кол-во вставляемых строк +1.

Приложил скрин таблицы. В данном случаее сначало вставлено 2 записи, потом еще 5 и затем еще 2.

К сообщению приложен файл. Размер - 7Kb
20 дек 18, 13:43    [21769488]     Ответить | Цитировать Сообщить модератору
 Re: Некорректное заполнение столбца идентификаторов при инсёрте данных  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Сергей Будылин,

by design. Все есть в справке
20 дек 18, 13:48    [21769493]     Ответить | Цитировать Сообщить модератору
 Re: Некорректное заполнение столбца идентификаторов при инсёрте данных  [new]
Сергей Будылин
Member

Откуда:
Сообщений: 7
TaPaK, можно немного подробнее?
20 дек 18, 14:03    [21769530]     Ответить | Цитировать Сообщить модератору
 Re: Некорректное заполнение столбца идентификаторов при инсёрте данных  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Сергей Будылин
TaPaK, можно немного подробнее?

Можно: приведённый пример корректен
20 дек 18, 14:13    [21769550]     Ответить | Цитировать Сообщить модератору
 Re: Некорректное заполнение столбца идентификаторов при инсёрте данных  [new]
Сергей Будылин
Member

Откуда:
Сообщений: 7
TaPaK,

Действительно немного. Спасибо.
20 дек 18, 14:14    [21769554]     Ответить | Цитировать Сообщить модератору
 Re: Некорректное заполнение столбца идентификаторов при инсёрте данных  [new]
Сергей Будылин
Member

Откуда:
Сообщений: 7
А как же все таки сделать чтобы столбец заполнялся начиная с 1 с шагом 1 без этих выкрутасов.. )
20 дек 18, 14:19    [21769564]     Ответить | Цитировать Сообщить модератору
 Re: Некорректное заполнение столбца идентификаторов при инсёрте данных  [new]
boltnik
Member

Откуда: Калуга/Москва
Сообщений: 144
set identity insert on
20 дек 18, 14:22    [21769571]     Ответить | Цитировать Сообщить модератору
 Re: Некорректное заполнение столбца идентификаторов при инсёрте данных  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36686
Сергей Будылин
А как же все таки сделать чтобы столбец заполнялся начиная с 1 с шагом 1 без этих выкрутасов.. )
И чтобы еще перенумеровывался, если первую запись удалили, да? Чтобы не нарушать ваше чувство прекрасного?
20 дек 18, 14:23    [21769573]     Ответить | Цитировать Сообщить модератору
 Re: Некорректное заполнение столбца идентификаторов при инсёрте данных  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Сергей Будылин
А как же все таки сделать чтобы столбец заполнялся начиная с 1 с шагом 1 без этих выкрутасов.. )

1. сильно уговорить разработчика, что это прям очень необходимо.
2. Определиться что же будет при удалении/откате/парралельных вставках/и т.п.
3. Прийти к выводу что вам всего лишь надо пронумеровать вывод
20 дек 18, 14:23    [21769574]     Ответить | Цитировать Сообщить модератору
 Re: Некорректное заполнение столбца идентификаторов при инсёрте данных  [new]
Сергей Будылин
Member

Откуда:
Сообщений: 7
Гавриленко Сергей Алексеевич, ну что при удалении записей id уже не может использоваться я знаю) а вот в этом случае, когда добавляются новые записи, хочется понять просто почему так происходит
20 дек 18, 14:28    [21769580]     Ответить | Цитировать Сообщить модератору
 Re: Некорректное заполнение столбца идентификаторов при инсёрте данных  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Сергей Будылин
Гавриленко Сергей Алексеевич, ну что при удалении записей id уже не может использоваться я знаю) а вот в этом случае, когда добавляются новые записи, хочется понять просто почему так происходит

вам тоже запретили msdn открывать?
20 дек 18, 14:30    [21769582]     Ответить | Цитировать Сообщить модератору
 Re: Некорректное заполнение столбца идентификаторов при инсёрте данных  [new]
Сергей Будылин
Member

Откуда:
Сообщений: 7
TaPaK, да нет, не смог найти ответа просто
20 дек 18, 14:33    [21769589]     Ответить | Цитировать Сообщить модератору
 Re: Некорректное заполнение столбца идентификаторов при инсёрте данных  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Сергей Будылин
TaPaK, да нет, не смог найти ответа просто

автор
Последовательные значения в пределах транзакции ― при вставке транзакцией нескольких строк не гарантируется, что для них будут назначены последовательные значения. Это связано с тем, что в таблице могут выполняться другие параллельные операции вставки. Если значения должны быть последовательными, то транзакция должна использовать монопольную блокировку для таблицы или уровень изоляции SERIALIZABLE.

Последовательные значения после перезапуска сервера или других ошибок - SQL Server может сохранять значения идентификаторов в кэше для обеспечения высокой производительности, и некоторые из присвоенных значений могут быть потеряны при сбое базы данных или перезагрузке сервера. Это может вызвать пропуски в значениях идентификатора при вставке. Если пропуски недопустимы, приложение должно использовать собственный механизм для создания значений ключей. Использование генератора последовательностей с параметром NOCACHE может привести к ограничению пропусков в незафиксированных транзакциях.

Повторное использование значений — свойства идентификаторов, созданные конкретным свойством идентификатора с заданными аргументами seed и increment, не используются повторно подсистемой. Если определенная инструкция вставки завершается с ошибкой или производится ее откат, использованные значения идентификаторов не будут созданы повторно. Это может привести к появлению пропусков при создании последующих значений идентификаторов.
20 дек 18, 14:36    [21769599]     Ответить | Цитировать Сообщить модератору
 Re: Некорректное заполнение столбца идентификаторов при инсёрте данных  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36686
Сергей Будылин
TaPaK, да нет, не смог найти ответа просто
http://bfy.tw/LROh
20 дек 18, 14:36    [21769601]     Ответить | Цитировать Сообщить модератору
 Re: Некорректное заполнение столбца идентификаторов при инсёрте данных  [new]
Сергей Будылин
Member

Откуда:
Сообщений: 7
Ясно, понятно. Спасибо.)
20 дек 18, 14:48    [21769622]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить