From: | Merlin Moncure <mmoncure(at)gmail(dot)com> |
---|---|
To: | Michael Black <michaelblack75052(at)hotmail(dot)com> |
Cc: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: 9.1 Trigger question |
Date: | 2011-03-10 14:22:13 |
Message-ID: | AANLkTimwUo5jLUDYY49kXQRKiLB1vD1a7xP83Z=QtLAk@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Wed, Mar 9, 2011 at 8:24 PM, Michael Black
<michaelblack75052(at)hotmail(dot)com> wrote:
> The following from 9.1 documentation on triggers ----
>
> "SQL allows you to define aliases for the "old" and "new" rows or tables for
> use in the definition of the triggered action (e.g., CREATE TRIGGER ... ON
> tablename REFERENCING OLD ROW AS somename NEW ROW AS othername ...). Since
> PostgreSQL allows trigger procedures to be written in any number of
> user-defined languages, access to the data is handled in a language-specific
> way. "
>
> This seems to imply that triggers actually have to reference a function
> rather than containing the actual code for the trigger to perform. For
> example the only valid format of a trigger is to
>
> CREATE TRIGGER view_insert
> --- other parameters here ---
> EXECUTE PROCEDURE view_insert_row();
>
> Instead of the normal way
>
> CREATE TRIGGER view_insert
> --- other parameters here ---
> AS
> --- sql functions, conditions and statements ---
> ;
>
> Is my understand in of this correct? If so, how does the other language
> know the old record from the new?
This is correct. In PostgreSQL, the trigger function is always
separate from the trigger definition. Procedures written in various
languages in PostgreSQL have to wrap an internal API that provides
access to various features, querying, etc. Take a look for example
how it is exposeed in python:
http://www.postgresql.org/docs/9.0/interactive/plpython-trigger.html
-- if you wanted to see how that was done you could look at the code
for the python language handler.
merlin
From | Date | Subject | |
---|---|---|---|
Next Message | mark | 2011-03-10 14:37:03 | sort mem: size in RAM vs size on Disk |
Previous Message | Bill Thoen | 2011-03-10 13:08:29 | Re: output screen in psql |