Firebird: trigger -> update from seelct while <sth...&

0

Witam,

chce napisac triggera, ktory przy UPDATE|INSERT|DELETE zmodyfikuje wszytskie nowsze rekordy (od updateowanego) az dojdzie do zmiennej np 'type' ktora bedzie rowna 1

czyli musze zrobic cos takiego:

FOR SELECT stop FROM table t1
WHILE t1.stop = 0 DO
BEGIN
UPDATE table ...
END

na razie mam 'syntax error' i kombinuje jak by to mialo poprawnie wygladac... korzystam z Firebirda i wiem ze rozni sie on troche pod wzgledem przyjmowanej skladni od innych baz.

moj kod wyglada tak:

SET TERM ^ ;

CREATE TRIGGER test_trigger FOR test
    AFTER INSERT OR UPDATE OR DELETE
AS 
DECLARE VARIABLE var1 INTEGER;
BEGIN 
    
    if (inserting and new.type = 1)
    then
        FOR 
            SELECT type FROM test t1 
            WHERE t1.var3 > new.var3
            INTO :var1
        DO
            WHILE :var1 = 0 DO
            BEGIN
                UPDATE test t2
                SET t2.var3= new.var3
            END
        
    if (updating and new.type = 1)
    then
    /* the same... */
    
END^

SET TERM ; ^

ale mysle ze obeszlo by sie bez deklarowania zmiennych itd.

moze mi ktos pomoc? :]

0

ok, poradzilem sobie...

0

to podziel się:D

1 użytkowników online, w tym zalogowanych: 0, gości: 1