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

Вниз

Может ли кто помочь с триггером?   Найти похожие ветки 

 
Alex Chu   (2003-02-18 14:42) [0]

Есть типичная ситуация - нужен триггер, который при обновлении одного поля в этой таблице обновлял соответствующее поле в другой таблице по несложной логике...

Проблема в понимании работы sybase, а именно:
триггера "операционные", а не "строковые", т.е. при обновлении триггер запускается один раз и применяется ко всем записям...

Есть ли кто-нибудь, сталкивавшийся с этой проблемой?


 
passm ©   (2003-02-18 17:06) [1]

Alex Chu (18.02.03 14:42)> Триггеры подобного рода есть не только в Sybase.
Их понять вовсе не сложно. Есть пара алиасов - виртуальных копий таблицы. Содержание которых - старые значения и новые значения.
Опишу для DB2, поскольку, судя по вопросу, для тебя важно понимание и с Sybase"ом я не знаком
CREATE TRIGGER <TRIGGER NAME> - без комментариев
AFTER UPDATE OF <FIELD1>,..<FIELDN> ON <TABLE NAME> - думаю, это понятно :)
FOR EACH STATEMENT - это как раз и указывает способ работы триггера
REFERENCES OLD_TABLE AS OLDTAB NEW_TABLE AS NEWTAB - объявление алиасов на новые и старые значения
MODE DB2SQL - так уж надо :)
WHEN ( <условие> )
BEGIN ATOMIC
< TRIGGER STATEMENT >
END
<условие>, например, може быть примерно такого содержания:
WHEN ( EXISTS(SELECT OLDTAB.ID FROM OLDTAB INNER JOIN NEWTAB ON (OLDTAB.ID = NEWTAB.ID) INNER JOIN TABLE1 T1 ON (OLDTAB.ID = T1.ID) WHERE OLDTAB.FIELD1 <> NEWTAB.FIELD1 AND NEWTAB.FIELD1 <> T1.FIELD1) )
< TRIGGER STATEMENT > IS:
UPDATE TABLE1 T1
SET T1.FIELD1 = (SELECT NEWTAB.FIELD1 FROM NEWTAB WHERE NEWTAB.ID = T1.ID)
WHERE T1.ID IN (SELECT OLDTAB.ID FROM OLDTAB INNER JOIN NEWTAB ON (OLDTAB.ID = NEWTAB.ID) WHERE OLDTAB.FIELD1 <> NEWTAB.FIELD1)

ЗЫ: Надеюсь, поможет :)



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

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

Наверх




Память: 0.47 MB
Время: 0.016 c
4-30190
Natalie
2003-01-21 21:18
2003.03.10
как узнать имена компов в сети?


1-29829
User_OKA
2003-02-28 08:43
2003.03.10
Excel


14-30135
{{{KOTOS}}}
2003-02-23 13:20
2003.03.10
МАСТЕРА СКИНЬТЕ ФАЙЛ ПОЖАЛУЙСТА GDS32.dl для NT


6-29988
2Ksion
2003-01-22 06:00
2003.03.10
Определение загрузки в tWebBrowser определённого фрейма.


1-29876
max2000
2003-02-26 13:43
2003.03.10
ImageList1