|
|
|
@ -115,6 +115,61 @@ CREATE TRIGGER users_update_trig BEFORE UPDATE ON users FOR EACH ROW |
|
|
|
|
EXECUTE PROCEDURE users_update ('willem'); |
|
|
|
|
CREATE TRIGGER users_delete_trig BEFORE DELETE ON users FOR EACH ROW |
|
|
|
|
EXECUTE PROCEDURE users_delete ('willem'); |
|
|
|
|
-- dump trigger data |
|
|
|
|
CREATE TABLE trigger_test |
|
|
|
|
(i int, v text ); |
|
|
|
|
CREATE FUNCTION trigger_data() returns trigger language plpythonu as $$ |
|
|
|
|
|
|
|
|
|
if TD.has_key('relid'): |
|
|
|
|
TD['relid'] = "bogus:12345" |
|
|
|
|
|
|
|
|
|
for key in sorted(TD.keys()): |
|
|
|
|
val = TD[key] |
|
|
|
|
plpy.notice("TD[" + key + "] => " + str(val)) |
|
|
|
|
|
|
|
|
|
return None |
|
|
|
|
|
|
|
|
|
$$; |
|
|
|
|
CREATE TRIGGER show_trigger_data_trig |
|
|
|
|
BEFORE INSERT OR UPDATE OR DELETE ON trigger_test |
|
|
|
|
FOR EACH ROW EXECUTE PROCEDURE trigger_data(23,'skidoo'); |
|
|
|
|
insert into trigger_test values(1,'insert'); |
|
|
|
|
NOTICE: ("TD[args] => ['23', 'skidoo']",) |
|
|
|
|
NOTICE: ('TD[event] => INSERT',) |
|
|
|
|
NOTICE: ('TD[level] => ROW',) |
|
|
|
|
NOTICE: ('TD[name] => show_trigger_data_trig',) |
|
|
|
|
NOTICE: ("TD[new] => {'i': 1, 'v': 'insert'}",) |
|
|
|
|
NOTICE: ('TD[old] => None',) |
|
|
|
|
NOTICE: ('TD[relid] => bogus:12345',) |
|
|
|
|
NOTICE: ('TD[table_name] => trigger_test',) |
|
|
|
|
NOTICE: ('TD[table_schema] => public',) |
|
|
|
|
NOTICE: ('TD[when] => BEFORE',) |
|
|
|
|
update trigger_test set v = 'update' where i = 1; |
|
|
|
|
NOTICE: ("TD[args] => ['23', 'skidoo']",) |
|
|
|
|
NOTICE: ('TD[event] => UPDATE',) |
|
|
|
|
NOTICE: ('TD[level] => ROW',) |
|
|
|
|
NOTICE: ('TD[name] => show_trigger_data_trig',) |
|
|
|
|
NOTICE: ("TD[new] => {'i': 1, 'v': 'update'}",) |
|
|
|
|
NOTICE: ("TD[old] => {'i': 1, 'v': 'insert'}",) |
|
|
|
|
NOTICE: ('TD[relid] => bogus:12345',) |
|
|
|
|
NOTICE: ('TD[table_name] => trigger_test',) |
|
|
|
|
NOTICE: ('TD[table_schema] => public',) |
|
|
|
|
NOTICE: ('TD[when] => BEFORE',) |
|
|
|
|
delete from trigger_test; |
|
|
|
|
NOTICE: ("TD[args] => ['23', 'skidoo']",) |
|
|
|
|
NOTICE: ('TD[event] => DELETE',) |
|
|
|
|
NOTICE: ('TD[level] => ROW',) |
|
|
|
|
NOTICE: ('TD[name] => show_trigger_data_trig',) |
|
|
|
|
NOTICE: ('TD[new] => None',) |
|
|
|
|
NOTICE: ("TD[old] => {'i': 1, 'v': 'update'}",) |
|
|
|
|
NOTICE: ('TD[relid] => bogus:12345',) |
|
|
|
|
NOTICE: ('TD[table_name] => trigger_test',) |
|
|
|
|
NOTICE: ('TD[table_schema] => public',) |
|
|
|
|
NOTICE: ('TD[when] => BEFORE',) |
|
|
|
|
|
|
|
|
|
DROP TRIGGER show_trigger_data_trig on trigger_test; |
|
|
|
|
|
|
|
|
|
DROP FUNCTION trigger_data(); |
|
|
|
|
-- nested calls |
|
|
|
|
-- |
|
|
|
|
CREATE FUNCTION nested_call_one(text) RETURNS text |
|
|
|
|