Martín Marqués wrote:
> Is it posible to make a rule execute more then one query?
>
> Something like:
>
> CREATE RULE rule_name AS ON INSERT TO table1
> DO INSTEAD
> INSERT INTO table2 VALUES
> (new.value1,new.value2)
> INSERT INTO table3 VALUES
> (x,y)

    Yes:

        CREATE RULE rule_name AS ON INSERT TO table1
        DO INSTEAD (
            INSERT INTO table2 VALUES
            (new.value1,new.value2);
            INSERT INTO table3 VALUES
            (x,y);
        );

    You just omitted the parens and semicoli :-)

>
> If not, is there a way to do this? Triggers maybe?

    Triggers  too  (even if yes above and effectively you haven't
    asked for):

        CREATE FUNCTION whatever () RETURNS opaque AS '
        BEGIN
            INSERT INTO table2 VALUES
            (new.value1,new.value2);
            INSERT INTO table3 VALUES
            (...);
            RETURN NULL; -- returning NULL from a BEFORE trigger
                         -- suppresses the triggering INSERT to
                         -- happen.
        END;'
        LANGUAGE 'plpgsql';

        CREATE TRIGGER table1_ins BEFORE INSERT ON table1
            FOR EACH ROW EXECUTE whatever();


Jan

--

#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#================================================== [EMAIL PROTECTED] #



_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com


---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to