powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / UPDATE ORDER BY sybase ASE
7 сообщений из 7, страница 1 из 1
UPDATE ORDER BY sybase ASE
    #38838565
PanzerID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер. Не могли бы Вы помочь в такой задаче:
" таблица : id, priority, mark
Нужно пометить выбрать N записей, которые не помечены и с максимальный приоритетом
Должно быть потокобезопасно, чтобы в разные потоки не попали одинаковые записи
".
С ASE начал работать недавно. Помогите неопытному человеку
...
Рейтинг: 0 / 0
UPDATE ORDER BY sybase ASE
    #38838568
PanzerID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему, собственно, так озаглавил вопрос "UPDATE ORDER BY". Находил такую конструкцию на info.sybase,но почему-то она не срабатывает и ругается
...
Рейтинг: 0 / 0
UPDATE ORDER BY sybase ASE
    #38838588
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PanzerIDДобрый вечер. Не могли бы Вы помочь в такой задаче:
" таблица : id, priority, mark
Нужно пометить выбрать N записей, которые не помечены и с максимальный приоритетом
Должно быть потокобезопасно, чтобы в разные потоки не попали одинаковые записи
".
С ASE начал работать недавно. Помогите неопытному человекуА теперь еще раз и поподробнее. А то уж очень загадочное желание.


UPDATE ORDER BY - не возможно, потому что бессмысленно.
Если тебе обязательно делать обновление записей в каком-то порядке (зачем?), то делаешь курсор for update, в который выбираешь записи в каком-то порядке, и потом в цикле уже обновляешь курсор.
...
Рейтинг: 0 / 0
UPDATE ORDER BY sybase ASE
    #38838650
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PanzerID,

PanzerIDДолжно быть потокобезопасно, чтобы в разные потоки не попали одинаковые записи".
Это вообще не понял!

PanzerID Нужно пометить выбрать N записей , которые не помечены и с максимальный приоритетом
Top что ли?

Если нужен Top, то я бы сгрузил бы иды во времянку и потом сделал бы update.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select top 10 id 
into #tmp
from tbl
where mark = 0
order by priority desc

update tbl
set mark = 1
where id in (select id from #tmp)
...
Рейтинг: 0 / 0
UPDATE ORDER BY sybase ASE
    #38838835
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PanzerID,

выбирай записи курсором с for update и order by.
потом обрабатывай.

update с order by не бывает.
...
Рейтинг: 0 / 0
UPDATE ORDER BY sybase ASE
    #38839956
Mikle83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PanzerIDДобрый вечер. Не могли бы Вы помочь в такой задаче:
" таблица : id, priority, mark
Нужно пометить выбрать N записей, которые не помечены и с максимальный приоритетом
Должно быть потокобезопасно, чтобы в разные потоки не попали одинаковые записи
".
С ASE начал работать недавно. Помогите неопытному человеку



В цикле (while) уменьшаешь Priority , пока тебе
update TOP 100 не вернет значение, отличное от нуля.
Второе условие выхода из цикла - минимальное (отрицательное?) значение Priority

Про "потокобезопасно" - "разруливается" блокировками на update .
Select for update - хорошо, но время блокировок будет бОльшим + если вдруг "это" делается через клиента на джаве - можно выгрести кучу непредсказуемых вещей типа зависающих сессий, не закрытых курсоров и т.п.
...
Рейтинг: 0 / 0
UPDATE ORDER BY sybase ASE
    #38840180
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikle83,

да ладно, не все так страшно.
лучше конечно делать внутри хранимой процедуры все.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / UPDATE ORDER BY sybase ASE
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]