Text Size: Normal / Large

39.2. Trigger Functions

When a function is used as a trigger, the dictionary TD contains trigger-related values. The trigger rows are in TD["new"] and/or TD["old"] depending on the trigger event. TD["event"] contains the event as a string (INSERT, UPDATE, DELETE, or UNKNOWN). TD["when"] contains one of BEFORE, AFTER, and UNKNOWN. TD["level"] contains one of ROW, STATEMENT, and UNKNOWN. TD["name"] contains the trigger name, and TD["relid"] contains the OID of the table on which the trigger occurred. If the CREATE TRIGGER command included arguments, they are available in TD["args"][0] to TD["args"][(n-1)].

If TD["when"] is BEFORE, you may return None or "OK" from the Python function to indicate the row is unmodified, "SKIP" to abort the event, or "MODIFY" to indicate you've modified the row.


User Comments


Jorge Godoy <godoy AT g2ctech.com>
23 Jan 2006 13:50:17

One thing to notice is that PL/Python won't use the names of variables passed on function definition, so you should always use args[<n>] or associate it with a name before using that name.

Jorge Godoy <godoy AT g2ctech.com>
23 Jan 2006 13:51:58

Another thing to notice when writing trigger and functions with PL/Python is that you *shouldn't* use "DECLARE", "BEGIN" and "END".  The function body starts right after the 'CREATE' line.

New comments cannot be added to old documentation versions.

Privacy Policy | Project hosted by our server sponsors. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group