Программа iNETsHOP - обработка, сравнение, анализ прайс листов поставщиков, создание каталога товаров интернет магазина Форум - Программа iNETsHOP - Работа с программой - обновление валюты


http://inetshop.in.ua/index.php?p=showtopic&toid=156&pp=15&page=1&area=1&print_post=590
08.09.2010 16:42

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Этот триггер не представляет из себя ничего особенного

Код

CREATE TRIGGER [TBL_CURRENCY#CHANGE_RATE] ON dbo.TBL_CURRENCY
FOR INSERT, UPDATE
AS
IF UPDATE(CUR_RATE)
BEGIN
DECLARE @l_iCUR_ID int, @l_fCUR_RATE float, @l_iSG_ID int;
DECLARE cInserted CURSOR LOCAL FOR Select CUR_ID, CUR_RATE from Inserted;
OPEN cInserted;
FETCH NEXT FROM cInserted INTO @l_iCUR_ID, @l_fCUR_RATE;
WHILE (@@FETCH_STATUS <> -1)
BEGIN

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;

IF IsNull(@l_fCUR_RATE, 0) <> IsNull((select CUR_RATE from Deleted where CUR_ID = @l_iCUR_ID), 0)
BEGIN
INSERT INTO TBL_CURRENCY_RATES (CURR_CUR_ID, CURR_RATE, CURR_DATE)
SELECT @l_iCUR_ID, @l_fCUR_RATE, GetDate();
END;

FETCH NEXT FROM cInserted INTO @l_iCUR_ID, @l_fCUR_RATE;
END;
CLOSE cInserted;
DEALLOCATE cInserted;
END;