Добро пожаловать, Гость. Для того, чтобы отвечать на сообщения и создавать новые темы, Вам необходимо зарегистрироваться, если Вы уже зарегистрированы, то войдите используя Ваши E-Mail и Пароль. |
|
Как ускорить изменения валюты (Справочник валют) |
|
|
rudenko
Пользователь iNETsHOP
Количество сообщений
5
Зарегистрирован:
25-07-2012, 17:07:00
|
Как ускорить изменения валюты (Справочник валют)
Как ускорить изменения валют в Справочнике валют?
"Дробление" одой и той-же валюты на несколько даёт незначительный результат.
|
Распечатать
|
|
support
Support
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
|
Вы имеете ввиду изменение курса валюты?
|
Распечатать
|
|
rudenko
Пользователь iNETsHOP
Тема начата
Количество сообщений
5
Зарегистрирован:
25-07-2012, 17:07:00
|
Как ускорить изменения валюты (Справочник валют)
Да
|
Распечатать
|
|
support
Support
Количество сообщений
1199
Зарегистрирован:
11-04-2008, 19:11:57
|
Пересчет курса валюты происходит в триггере TBL_CURRENCY#CHANGE_RATE таблицы TBL_CURRENCY. Большие задержки при пересчете курса у валюты, которая используется во многих товарах поставщиков, могут быть обусловлены нагрузкой на подсистему логирования при больших транзакциях.
Для ускорения процесса пересчета удобнее отказаться от одной общей транзакции и пересчитать цену согласно курса валюты по каждому товару по отдельности.
Запускаем SQL Server Enterprise Manager для СУБД SQL Server 2000 или SQL Server Management Studio для более поздних версий и находим таблицу TBL_CURRENCY.
Переходим к администрированию триггеров и открываем триггер TBL_CURRENCY#CHANGE_RATE
В указанном триггере в коде закомментируем код, который отвечает за пересчет валюты при изменении курса
Теперь осталось только настроить пользовательский скрипт, который будем вызывать для валюты, курс который нужно пересчитать. Сам текст SQL-скрипта:
Код
DECLARE @l_iCUR_ID int, @l_iSG_ID int;
SET @l_iCUR_ID = :ID;
DECLARE cSG CURSOR LOCAL FOR
Select SG_ID from TBL_SUPPLIERS_GOODS WHERE SG_CUR_ID = @l_iCUR_ID FOR UPDATE;
OPEN cSG;
FETCH NEXT FROM cSG INTO @l_iSG_ID;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
UPDATE TBL_SUPPLIERS_GOODS
SET SG_CUR_ID = @l_iCUR_ID
WHERE SG_ID = @l_iSG_ID AND SG_CUR_ID = @l_iCUR_ID;
FETCH NEXT FROM cSG INTO @l_iSG_ID;
END;
CLOSE cSG;
DEALLOCATE cSG;
|
Распечатать
|
|
rudenko
Пользователь iNETsHOP
Тема начата
Количество сообщений
5
Зарегистрирован:
25-07-2012, 17:07:00
|
Как запустить SQL Server
|
Распечатать
|
|
Статистика форума |
|
Тем: 506, Сообщений: 3222, Пользователей: 2257
Приветствуем новичка по имени L9800708 |
Ближайшие дни рождения |
|
Сегодня именинников нет |
|
|
Copyright 2007-2015 "Программа iNETsHOP - работа с прайс-листами поставщиков для интернет магазинов ®"
|
|