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

Вниз

как создать триггер   Найти похожие ветки 

 
dolmat   (2009-02-12 10:16) [0]

есть таблица SCETCIKI вида
лс пок.нач пок.кон. кол-во ID_usl_k
в ней несколько записей со ссылкой на один ID_usl_k из другой таблицы kvp_us
как сделать триггер

CREATE TRIGGER UPD_SCETCIK1 FOR SCETCIKI
ACTIVE AFTER UPDATE POSITION 1
AS

begin
 update kvp_us set kvp_us.KOLVO=sum(SCETCIKI.KOLVO) where kvp_us.NPP=SCETCIKI.ID_US_K;
end


 
Сергей М. ©   (2009-02-12 10:26) [1]


> как сделать триггер


Что значит "как" ?


 
Johnmen ©   (2009-02-12 10:27) [2]

1. Учить азы SQL. Акцентировать внимание на агрегатных функциях.
2. Сходить на www.ibase.ru


 
Сергей М. ©   (2009-02-12 10:34) [3]


> Johnmen ©   (12.02.09 10:27) [2]


Тут и агрегаты вряд ли не нужны, достаточно вычесть old.KOLVO и прибавить new.KOLVO)


 
Johnmen ©   (2009-02-12 10:41) [4]


> Сергей М. ©   (12.02.09 10:34) [3]

М.б. даже ничего ни вычитать ни прибавлять.
Но м.б. и агрегат...

Тьфу! Не хочу гадать.

Автору - задавать конкретные вопросы после выполнения [2]


 
dolmat   (2009-02-12 12:37) [5]

Прото выставляю на одобрям

CREATE TRIGGER UPD_SCETCIK1 FOR SCETCIKI
ACTIVE AFTER UPDATE POSITION 1
AS
DECLARE VARIABLE kolkn FLOAT;
begin
SELECT sum(kolvo) from SCETCIKI where (ID_US_K=old.ID_US_K)
into :kolkn;
if (:kolkn>0) then
 begin
 update kvp_us set KOLVO=:kolkn where NPP=old.ID_US_K;
 end
end


 
Сергей М. ©   (2009-02-12 12:44) [6]


> dolmat   (12.02.09 12:37) [5]


А почему не нужно обновлять аккумулятор в поле KOLVO, если kolkn<=0 ?

И собссно зачем всякий раз заново перерасчитывать sum(kolvo), если вполне достаточно скорректировать kvp_us.KOLVO на величину new.SCETCIKI.kolvo - old.SCETCIKI.kolvo ?


 
dolmat   (2009-02-12 13:01) [7]

Сергей М. ©   (12.02.09 12:44) [6]

мм.да наверное перемудрил


 
Sergey13 ©   (2009-02-12 13:09) [8]

> [5] dolmat   (12.02.09 12:37)

Почему только Update? Insert и Delete тоже влияют на результат.


 
Сергей М. ©   (2009-02-12 13:27) [9]


> dolmat   (12.02.09 13:01) [7]


И опять же - нет никакого резона апдейтить аккумулятор, если new.SCETCIKI.kolvo = old.SCETCIKI.kolvo

Мало ли по каким причинам сработал триггер ! Например, обновлены какие-то другие поля таблицы, а поле SCETCIKI.kolvo при этом не претерпело изменений


 
dolmat   (2009-02-12 13:29) [10]


> Sergey13 ©   (12.02.09 13:09) [8]

влияют на результат но не в этой ситуации т.к. без insert c начальным показанием не вносится ID_связи


 
Sergey13 ©   (2009-02-12 13:41) [11]

> [10] dolmat   (12.02.09 13:29)
> влияют на результат но не в этой ситуации

ИМХО, тригер должен правильно работать при ВСЕХ возможных ситуациях.
То что сейчас обычно что-то не вносится в твоем приложении не говорит о том что это никогда не будет вноситься никем другим.
Тем более, что там писать то три строчки.



Страницы: 1 вся ветка

Текущий архив: 2010.02.07;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
1-1236164057
dmitry1208197320
2009-03-04 13:54
2010.02.07
Управление размерами картинки при её вставке в Word


2-1260539849
Ху.рБуер
2009-12-11 16:57
2010.02.07
Загрузка файла по FTP (Indy)


15-1259596015
Keep
2009-11-30 18:46
2010.02.07
ОС x64 и 32 битные программы


1-1236890859
Tatarin
2009-03-12 23:47
2010.02.07
Спецсимволы HTML


15-1259734968
matveih1
2009-12-02 09:22
2010.02.07
Как показать направление сортировки в DBGrid