Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
4-1228894242
Хмм
2008-12-10 10:30
2010.02.07
Кликер


15-1259910918
tesseract
2009-12-04 10:15
2010.02.07
Тяпница в бочке


1-1237222317
harisma
2009-03-16 19:51
2010.02.07
Значение параметра по умолчанию для интерфейсного метода.


2-1260457480
RWolf
2009-12-10 18:04
2010.02.07
Exit из except-скобок


15-1259930302
@!!ex
2009-12-04 15:38
2010.02.07
Есть спецы в программирования для Win Mobile?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский