Skip to content

Instantly share code, notes, and snippets.

@icholy
Created February 11, 2013 16:23
Show Gist options
  • Save icholy/4755512 to your computer and use it in GitHub Desktop.
Save icholy/4755512 to your computer and use it in GitHub Desktop.
-- BEFORE INSERT TRIGGER
CREATE OR REPLACE FUNCTION foo.before_insert()
RETURNS TRIGGER AS
$$
oid = TD["relid"]
if oid not in GD:
GD[oid] = []
$$ LANGUAGE plpythonu;
CREATE TRIGGER before_insert_trigger
BEFORE INSERT
ON foo.bar
FOR EACH STATEMENT
EXECUTE PROCEDURE foo.before_insert();
-- EACH ROW INSERT TRIGGER
CREATE OR REPLACE FUNCTION foo.on_each_row()
RETURNS TRIGGER AS
$$
row = TD["new"]
oid = TD["relid"]
GD[oid].append(row)
$$ LANGUAGE plpythonu;
CREATE TRIGGER each_row_insert_trigger
AFTER INSERT
ON foo.bar
FOR EACH ROW
EXECUTE PROCEDURE foo.on_each_row();
-- AFTER INSERT TRIGGER
CREATE OR REPLACE FUNCTION foo.after_insert()
RETURNS TRIGGER AS
$$
import zmq
import json
oid = TD["relid"]
rows = GD[oid]
GD[oid] = []
try:
ctx = zmq.Context()
socket = ctx.socket(zmq.PUSH)
socket.connect("ipc:///tmp/feeds/test")
socket.send(json.dumps(rows))
socket.close()
except:
pass
$$ LANGUAGE plpythonu;
CREATE TRIGGER after_insert_trigger
AFTER INSERT
ON foo.bar
FOR EACH STATEMENT
EXECUTE PROCEDURE foo.after_insert();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment