Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Порядок обработки строк при UPDATE / 11 сообщений из 11, страница 1 из 1
01.08.2002, 11:25:13
    #32040186
Hibernate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок обработки строк при UPDATE
есть следующий UPDATE, реализующий сумму с накоплением:
Код: plaintext
1.
2.
DECLARE @d Int
Set @d
Update #TempTable Set Quantity = @d, @d = @d + Quantity

Все работает отлично, и строки апдейтятся в том порядке, в котором они были добавлены в таблицу...
НО есть одно НО:
Насколько я понимаю, при Update не гарантируется выборка строк в том порядке, в котором эти строки вставлялись в таблицу.... но в данном случае порядок имеет значение, поскольку эту сумму надо накопить по возрастанию даты. И очень не хочется однажды получить глюки из-за того, что однажды серверу вздумается сменить порядок обработки этой таблицы.

КАК обеспечить гарантию того, что строки будут обработаны в нужном мне порядке? Курсор я уже пробовал - все работает, но как-то оно не "элегантно"....
...
Рейтинг: 0 / 0
01.08.2002, 11:28:19
    #32040189
Hibernate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок обработки строк при UPDATE
в коде вкралась ошибка, во второй строчке правильно конечно-же так:
Код: plaintext
Set @d =  0 
...
Рейтинг: 0 / 0
01.08.2002, 11:42:20
    #32040198
VVG_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок обработки строк при UPDATE
Можно на #temptable clustered index по дате добавить. Но опять же, гарантий накаких...
...
Рейтинг: 0 / 0
01.08.2002, 16:58:53
    #32040363
Hibernate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок обработки строк при UPDATE
как плохо....
...
Рейтинг: 0 / 0
01.08.2002, 17:03:26
    #32040368
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок обработки строк при UPDATE
ни когда не сталкивался...
100% курсором..
а вот если добавить сортировку...хм... нуно попробовать....
...
Рейтинг: 0 / 0
02.08.2002, 12:38:45
    #32040580
Michael Hopgarden
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок обработки строк при UPDATE
Тоже сомневался. Метод использую. Отклонений не обнаружено. Зато скорость изменилась на порядок.
...
Рейтинг: 0 / 0
03.08.2002, 14:29:31
    #32040768
Hibernate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок обработки строк при UPDATE
2 Michael Hopgarden:

у меня тоже этот способ используется во многих местах. И отклонений тоже ПОКА нет (а может юзера просто не замечают или списывают на неповторяющиеся глюки)
Но это все некритичные места, а тут бухгалтерия... Алгоритм и без этого места сложен, и если это место когда-то начнет глючить, то можно и не найти в чем проблема, или еще хуже если налоговая на этот глюк нарвется раньше :-) Поэтому в данном случае интересует именно гарантия повторения результата на ближайшие 5-6 лет как минимум, с учетом выхода сервис паков и прочей лабудени, которая может на это повлиять...
...
Рейтинг: 0 / 0
05.08.2002, 11:53:58
    #32040851
Michael Hopgarden
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок обработки строк при UPDATE
2 Hibernate\r
Как Вы сами понимаете, гарантию Вам может дать (или не дать) только Microsoft. И мне, конечно, проще. Ибо, между разрабатываемым мной фронт-офисом и бухгалтерией есть еще бэк-офис. Я лишь хотел сказать, что не видел здесь упоминаний об отклонениях. Ссылку дать в предыдущем сообщении, не получилось. Повторю: /topic/5117
...
Рейтинг: 0 / 0
05.08.2002, 15:08:21
    #32040919
Hibernate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок обработки строк при UPDATE
за ссылку спасибо, но рисковать не стану - не тот случай, хотя и очень жаль, что придется опять крутить эти тупые циклы с этими курсорами!.... :-((
...
Рейтинг: 0 / 0
06.08.2002, 18:10:22
    #32041308
Miha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок обработки строк при UPDATE
Ну зачем же сразу курсоры?!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select key, otherfield1, ..., Quantity, Quantity as Quantity_result
into #TempTable
from ...

Update #TempTable Set Quantity_result = isnull(
(select sum(t1.Quantity) from #TempTable t1
where t1.key < #TempTable.key),  0 )

...
Рейтинг: 0 / 0
06.08.2002, 18:55:56
    #32041329
Hibernate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Порядок обработки строк при UPDATE
2 Miha:
Се(н)кс :-)
Попробую, правда, сомнение мучает насчет скорости работы, но надо попробовать и сравнить с курсором...
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Порядок обработки строк при UPDATE / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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