CREATE OR REPLACE FUNCTION notify_users()
RETURNS trigger AS
$BODY$
BEGIN
--SELECT pg_notify('mymessage', 'fired by FUNCTION');
NOTIFY users_changed, 'fired by NOTIFY';
RETURN NULL;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION notify_users() OWNER TO fhadmin;
Und ein Trigger
CREATE TRIGGER users_changed after insert or update or delete on users for each row execute procedure notify_users();
Ich habe dann ein Python Script geschrieben (Nach diesem Beispiel: More advanced topics — Psycopg v2.4.3.dev0 documentation)
das auf ein Notify wartet. Was auch funktioniert. Ich bekomme jetzt in dem Programm zurück, das sich ein Datensatz geändert hat:
NOTIFY: 1178 users_changed
Aber wie bekomme ich raus welcher Datensatz geändert wurde? Kann ich vielleicht den Primärschlüssel zurückgeben?
Hi
danke für die schnelle Antwort, ja ich verwende gerade 9.0.4
hast du zufällig einen guten Info Link zu payloads? Oder einen Tipp wie ich das am besten verwende?
achso, das tue ich doch schon lange. es ist momentan ein String, nur wie bekomme ich dort den Primärschlüssel des Datensatzes rein? Damit ich nachher beim auswerten weiß welcher Datensatz es ist um damit weiterzuarbeiten.
python script:
kleiner zwischenstand.
Bei anderen attributen z.b. vorname oder nachname funktioniert das einwandfrei.
Nur bei der uid die der Primärschlüssel ist nicht.