Question on rule

From: Michael Monnerie <michael(dot)monnerie(at)is(dot)it-management(dot)at>
To: pgsql-admin(at)postgresql(dot)org
Subject: Question on rule
Date: 2009-02-21 08:43:35
Message-ID: 200902210943.35832@zmi.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-admin

I have a question to creating a rule:

CREATE RULE dbmail_mailboxes_autocreate AS ON INSERT TO dbmail_users DO
ALSO insert into dbmail_mailboxes (owner_idnr,name) values
(NEW.user_idnr,'INBOX'), (NEW.user_idnr,'Gesendete Objekte'),
(NEW.user_idnr,'Entwürfe'), (NEW.user_idnr,'Junk'),
(NEW.user_idnr,'Papierkorb');
ERROR: VALUES must not contain OLD or NEW references
TIP: Use SELECT ... UNION ALL ... instead.

But in http://www.postgresql.org/docs/8.3/interactive/rules-update.html
the examples also use NEW in the values. Or can I only use a rule within
the same table?

If I need to use a TRIGGER: I tried with creating a function, but I
don't know how to pass the current user_idnr to that function from the
trigger. I managed to create the function:

CREATE FUNCTION dbmail_mailboxes_autocreate_function(user_idnr bigint)
returns integer AS $$ BEGIN insert into dbmail_mailboxes
(owner_idnr,name) values (user_idnr,'INBOX'), (user_idnr,'Gesendete
Objekte'), (user_idnr,'Entwürfe'), (user_idnr,'Junk'),
(user_idnr,'Papierkorb'); END; $$ LANGUAGE plpgSQL;

But I don't know how to do the trigger. Can someone help me?

mfg zmi
--
// Michael Monnerie, Ing.BSc ----- http://it-management.at
// Tel: 0660 / 415 65 31 .network.your.ideas.
// PGP Key: "curl -s http://zmi.at/zmi.asc | gpg --import"
// Fingerprint: AC19 F9D5 36ED CD8A EF38 500E CE14 91F7 1C12 09B4
// Keyserver: wwwkeys.eu.pgp.net Key-ID: 1C1209B4

Responses

Browse pgsql-admin by date

  From Date Subject
Next Message Scott Marlowe 2009-02-21 08:57:56 Re: very, very slow performance
Previous Message Michael Monnerie 2009-02-21 08:43:19 Re: 8.3.5 broken after power fail SOLVED