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

Откуда:
Сообщений: 55
Прет всем , подскажите как сделать следующее .
Есть программа пр1 котороя берёт первые 100 записей из тбл1 (итд в цыкле) и обрабатывает эти записи , после оброботки отмечает что эти записи уже оброботаны .

Для ускорения работы есть необходимость запустить несколько копий программы пр1 , но как сделать чтоб селект не брал записи которые уже были взяты.
5 май 11, 17:17    [10611942]     Ответить | Цитировать Сообщить модератору
 Re: Отметить записи попавшие в селект  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Дописать where запись_взята = 0.
5 май 11, 17:18    [10611949]     Ответить | Цитировать Сообщить модератору
 Re: Отметить записи попавшие в селект  [new]
saalex
Member

Откуда:
Сообщений: 55
А как отметить что она взята , и предостеречь другои селект от взятия этои записи. в этот же момент ?
5 май 11, 17:19    [10611956]     Ответить | Цитировать Сообщить модератору
 Re: Отметить записи попавшие в селект  [new]
Gwa
Guest
Выбрать и отметить в рамках одной транзакции
5 май 11, 17:22    [10611973]     Ответить | Цитировать Сообщить модератору
 Re: Отметить записи попавшие в селект  [new]
saalex
Member

Откуда:
Сообщений: 55
Подскажите как ?
5 май 11, 17:24    [10611986]     Ответить | Цитировать Сообщить модератору
 Re: Отметить записи попавшие в селект  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
saalex
А как отметить что она взята , и предостеречь другои селект от взятия этои записи. в этот же момент ?
В специально для этого созданном поле. Вам же уже сказали.
Другое дело, а цикл-то зачем? Какая-такая обработка может быть реализована только в цикле?
От этого надо уходить всеми силами, вот что я Вам скажу!
5 май 11, 17:25    [10611993]     Ответить | Цитировать Сообщить модератору
 Re: Отметить записи попавшие в селект  [new]
saalex
Member

Откуда:
Сообщений: 55
Да обработка в цикле , а как по другому ..
Программа берёт 100 записеи обрабатывает , и как закнчивает берётся за следующие 100 записеий.
5 май 11, 17:30    [10612048]     Ответить | Цитировать Сообщить модератору
 Re: Отметить записи попавшие в селект  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Для решения таких задач в СУБД существуют транзакции, их уровни изоляции, которые накладывают блокировки, и специальная подсказка в запросах READPAST, позволяющая пропустит заблокированные записи.
5 май 11, 17:31    [10612072]     Ответить | Цитировать Сообщить модератору
 Re: Отметить записи попавшие в селект  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
saalex,

"Программа" - это нечто внешнее, по отношению к MS SQL?
5 май 11, 17:32    [10612082]     Ответить | Цитировать Сообщить модератору
 Re: Отметить записи попавшие в селект  [new]
bibiskula
Member

Откуда: Пöндус(Инöстрäнный öгент)
Сообщений: 52988
saalex
Прет всем , подскажите как сделать следующее .
Есть программа пр1 котороя берёт первые 100 записей из тбл1 (итд в цыкле) и обрабатывает эти записи , после оброботки отмечает что эти записи уже оброботаны .

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


update t1 set [признака] = (уникальное значение) where (условие)
select * from t1 where (уникальное значение)
5 май 11, 17:39    [10612155]     Ответить | Цитировать Сообщить модератору
 Re: Отметить записи попавшие в селект  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
update top (100) [Таблица]
 set
  [Статус записи] = 'Обрабатывается'
output inserted.[Ключ]
where
 [Статус записи] = 'Доступно для обработки'
5 май 11, 17:59    [10612345]     Ответить | Цитировать Сообщить модератору
 Re: Отметить записи попавшие в селект  [new]
saalex
Member

Откуда:
Сообщений: 55
Спасибо вы мне очень помогли .
6 май 11, 11:27    [10615429]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить