Pythonトリガープロシージャを使用して、レプリケーションに似たものを実装しようとしています。
手順
CREATE OR REPLACE FUNCTION foo.send_payload()
RETURNS trigger AS
$$
import json, zmq
try:
payload = json.dumps(TD)
ctx = zmq.Context()
socket = ctx.socket(zmq.PUSH)
socket.connect("ipc:///tmp/feeds/0")
socket.send(payload)
socket.close()
except:
pass
$$
LANGUAGE plpython VOLATILE;
引き金
CREATE TRIGGER foo.my_trigger
AFTER INSERT
ON foo.my_table
FOR EACH ROW
EXECUTE PROCEDURE foo.send_payload();
これは機能しますが、あまり効率的ではありません。行は一括で挿入され、ソケットを再利用してすべてを送信したいと考えています。ただし、ステートメント レベルのトリガーを実行すると、行にアクセスできません。
最後に処理される行 ID となるシーケンスを定義することを考えていました。SELECT
次に、それを使用して、ステートメント レベルのトリガー内でプロシージャ内のすべてのデータを取得します。問題は、インクリメントせずにシーケンス値を取得する方法がないように見えることです。
この問題にアプローチする方法について何か提案はありますか?