Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.02.07;
Скачать: CL | DM;

Вниз

Переписал триггер 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.008 c
2-1260531371
alex ford
2009-12-11 14:36
2010.02.07
закинуть в ресурсы файлы


15-1259939238
TUser
2009-12-04 18:07
2010.02.07
Скончался Титхонов


15-1259935064
@!!ex
2009-12-04 16:57
2010.02.07
Как изменить путь к make?


15-1259933827
Insor
2009-12-04 16:37
2010.02.07
Где взять компонент TrxTrayIcon отдельно только его?


15-1259789646
AlexDan
2009-12-03 00:34
2010.02.07
Переходить ли на W7.. продолжение..