Форум: "Прочее";
Текущий архив: 2010.02.07;
Скачать: [xml.tar.bz2];
ВнизПереписал триггер SQL2000. Что не так то? Найти похожие ветки
← →
12 © (2009-12-02 14:47) [0]Собственно, продолжая ускорять сервер нашел такой триггер
---------
Declare @P int, @J int, @F bit, @M money
Declare #Fifo_Delete Cursor FAST_FORWARD For
Select
Product, JournalIn, Free, Move From Deleted
Where Deleted = 0
Open #Fifo_Delete
Fetch From #Fifo_Delete InTo @P, @J, @F, @M
While @@FETCH_STATUS = 0
Begin
If @F = 0
Update FifoIn Set MoveOutRef = MoveOutRef - @M
Where Product = @P and Journal = @J
Else
Update FifoIn Set MoveOut = MoveOut - @M
Where Product = @P and Journal = @J
Fetch From #Fifo_Delete InTo @P, @J, @F, @M
End
Close #Fifo_Delete
Deallocate #Fifo_Delete
--------
Написал разработчику письмо, что можно переписать так
Update fi
set
fi.MoveOutRef = MoveOutRef - d.Move
from
Deleted d
join FifoIn fi on fi.product = d.product and fi.journal=d.journalin
where
d.free = 0 and d.deleted = 0
Update fi
set
fi.MoveOut = MoveOut - d.Move
from
Deleted d
join FifoIn fi on fi.product = d.product and fi.journal=d.journalin
where
d.free <> 0 and d.deleted = 0
на что получил ответ, что так нельзя.
Почему?
← →
Игорь Шевченко © (2009-12-02 14:52) [1]Странный ты. Тебе сказал кто-то, ты спрашиваешь здесь. Прямых путей не ищешь ?
← →
Anatoly Podgoretsky © (2009-12-02 14:59) [2]> Игорь Шевченко (02.12.2009 14:52:01) [1]
Здесь светлее.
← →
12 © (2009-12-02 15:02) [3]я думаю, что разработчик "блюдет репутацию"
мне же на нее ...
мне надо ускорить работу. Иначе буду переучиваться на новую систему под Oracle(которого я не знаю ни разу) все новогодние праздники
← →
Anatoly Podgoretsky © (2009-12-02 15:03) [4]> 12 (02.12.2009 15:02:03) [3]
Переучивай.
← →
clickmaker © (2009-12-02 15:37) [5]> мне надо ускорить работу
в твоем варианте можно вообще одним апдейтом обойтись, раз уж на то пошло
Update fi
set
fi.MoveOutRef = (case when d.Free = 0 then MoveOutRef - d.Move else MoveOutRef end),
fi.MoveOut = (case when d.Free <> 0 then MoveOut - d.Move else MoveOut end)
from
Deleted d
join FifoIn fi on fi.product = d.product and fi.journal=d.journalin
where
d.deleted = 0
← →
12 © (2009-12-02 16:16) [6]
> в твоем варианте можно вообще одним апдейтом
ну да, вобще-то..
а почему ж таки надо цикл крутить - так и не понял.
Сидел, на бумажке даже рисовал - ну нет никакой разницы..
> Anatoly Podgoretsky © (02.12.09 15:03) [4]
не охота :)
← →
Anatoly Podgoretsky © (2009-12-02 16:52) [7]Ну это общеизвечный бич, по русски лень называется.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2010.02.07;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c