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

Откуда: Москва
Сообщений: 826
Странная вещь произошла, которую никак не могу объяснить... Есть некие документы, которе вбиваются в базу... 13-го числа оператор вбил туда документ и номер получился 5820. А 18-го нумерация пошла с 5827. Раньше таких пропусков не было. Чем это можно объяснить?

Удалять из этой таблицы записи невозможно, т.к. настроена ссылочная целостность с другой таблицей (куда записи автоматом добавляются при добавлении в эту, но там с нумерацией все в порядке).
18 ноя 04, 16:39    [1117720]     Ответить | Цитировать Сообщить модератору
 Re: Инкрементный счетчик пропустил 6 записей...  [new]
Glory
Member

Откуда:
Сообщений: 104760
А удалять и не надо - достаточно откатить незавершенную транзакцию.
18 ноя 04, 16:40    [1117725]     Ответить | Цитировать Сообщить модератору
 Re: Инкрементный счетчик пропустил 6 записей...  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
begin tran
insert table_with_identity ...
rollback
insert table_with_identity ...
18 ноя 04, 16:40    [1117727]     Ответить | Цитировать Сообщить модератору
 Re: Инкрементный счетчик пропустил 6 записей...  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Т.е. вы хотите сказать, что у вас в связанной таблице при наличие FK есть записи из отсутствующего интервала?
18 ноя 04, 16:41    [1117731]     Ответить | Цитировать Сообщить модератору
 Re: Инкрементный счетчик пропустил 6 записей...  [new]
avec
Member

Откуда: Москва
Сообщений: 826
2 pkarklin

Возможно я как-то не так выразился...

Есть таблица 1: dst_ID, ... туда на insert стоит триггер добавляющий запись в табл. 2: ord_ID, ord_Dst_ID, ...

Настроена ссылочная целостность, что нельзя удалить из таблицы 1, если в табл. 2 есть "деталька" к ней.

Пропуск номеров имеет место быть в табл. 1. Нумерация ord_ID (тоже автоинкремент) в табл. 2 без пропусков. Естественно, записей с ord_Dst_ID, отсутствующими в табл. 1, в ней нет...
18 ноя 04, 16:57    [1117844]     Ответить | Цитировать Сообщить модератору
 Re: Инкрементный счетчик пропустил 6 записей...  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Glory и Гавриленко Сергей Алексеевич привели Вам вариант образования дырок даже без удаления.
18 ноя 04, 16:59    [1117864]     Ответить | Цитировать Сообщить модератору
 Re: Инкрементный счетчик пропустил 6 записей...  [new]
avec
Member

Откуда: Москва
Сообщений: 826
Да, спасибо, уже разобрались. Это было из-за ошибки в триггере, который выполнял некий расчет по табл. 2, соответственно, транзакция и откатывалась.

Остался только еще один момент уточнить. Этот триггер на INSERT, UPDATE и DELETE и там, в том числе есть такая строчка:

IF UPDATE(clc_Dst_IDUp) 
"что-то сделать"


Я думал, что при INSERTе этот блок "что-то сделать" не выполняется. Видимо, оказался не прав.
18 ноя 04, 17:37    [1118113]     Ответить | Цитировать Сообщить модератору
 Re: Инкрементный счетчик пропустил 6 записей...  [new]
Glory
Member

Откуда:
Сообщений: 104760
Я думал, что при INSERTе этот блок "что-то сделать" не выполняется
Для INSERT эта функция как раз для всех столбцов будет возвращать ИСТИНА.
18 ноя 04, 17:39    [1118124]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить