From: | Mirko Zeibig <mirko(at)picard(dot)inka(dot)de> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: Spot the error in my plpgsql... |
Date: | 2001-01-17 12:03:05 |
Message-ID: | 20010117130305.A18543@picard.inka.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Tue, Jan 16, 2001 at 12:22:28PM -0800, Adam Haberlach wrote:
> On Tue, Jan 16, 2001 at 12:58:41PM +0100, Mirko Zeibig wrote:
> > On Mon, Jan 15, 2001 at 07:54:26PM -0800, Adam Haberlach wrote:
> > > I've got the following procedure...
> > >
> > > DROP FUNCTION "blank_referring_devices" ();
> > > CREATE FUNCTION "blank_referring_devices" () RETURNS opaque AS
> > > '
> > > BEGIN
> > > EXECUTE ''UPDATE t_device SET accountid=NULL WHERE accountid =''
> > > || quote_literal(OLD.accountid);
> > > END;
> > > '
> > of course I do not know what you want exactly, but why do you need EXECUTE
> > for this?
> >
> > BEGIN
> > UPDATE t_device
> > SET accountid=NULL
> > WHERE accountid=quote_literal(OLD.accountid);
> > END;
>
> This seems to be what I want, but how does this differ from the 'EXECUTE'
> syntax, which I find is not yet in released versions of Postgres? I'll try
> this out...
If I am not mistaken, without EXECUTE tablenames etc. are "hard-compiled",
with EXECUTE you could do sth. like:
CREATE FUNCTION "blank_referring_devices" (text) RETURNS opaque AS
DECLARE
relname ALIAS FOR $1
BEGIN
EXECUTE ''UPDATE '' || relname || '' SET accountid=NULL WHERE accountid =''
|| quote_literal(OLD.accountid);
END;
DROP TRIGGER "t_account_blank_devrel" ON "t_account";
CREATE TRIGGER "t_account_blank_devrel" BEFORE DELETE ON "t_account"
FOR EACH ROW EXECUTE PROCEDURE "blank_referring_devices" ('t_device');
so you may pass the name of the table, for which accountid is to be
deleted. Nonetheless I'd do this with FOREIGN KEYS, though :-).
Note: I have not checked wether this works and wether text is adequate for
tablenames, maybe you have to convert this to char or varchar.
Regards
Mirko
From | Date | Subject | |
---|---|---|---|
Next Message | Robert D. Nelson | 2001-01-17 13:10:00 | RE: MySQL file system |
Previous Message | Oliver Elphick | 2001-01-17 11:17:50 | Re: Bug#82029: Postgres installing (fwd) |