Created
February 11, 2013 16:23
-
-
Save icholy/4755512 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- 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