Du würdest es Dir und anderen leichter machen, das alles zuerst einmal in psql auszutesten, ohne dem PGAdmin und Micosoft-Gedöhns ...
[code]
edb=*# create table bla(id uuid DEFAULT gen_random_uuid (), data text);
CREATE TABLE
edb=*# create or replace function notify_id_trigger() RETURNS trigger AS $$ begin PERFORM pg_notify('new_Id'::text, NEW."id"::text); return new; end; $$ language plpgsql;
CREATE FUNCTION
edb=*# create trigger trg1 after insert or update on bla for each row execute procedure notify_id_trigger();
CREATE TRIGGER
edb=*# insert into bla (data) values ('test');
INSERT 0 1
[/code]
Ein Listener auf 'new_Id' sollte nun eine Notification erhalten haben.
ist der eigentliche Fehler. Deine Tabelle hat Spalte id mit Datentyp UUID, pg_notify erwartet aber (TEXT,TEXT). Das ::text in einer definierten Funktion führt daher einen explizieten CAST auf diesen Datentyp durch.
Wenn Du in der Anwendung den vergebenen ID-Wert wissen willst, könntest Du das einfach haben und den vergebenen Wert einfach als Returnwert definieren:
[code]
edb=*# drop table bla;
DROP TABLE
edb=*# create table bla(id uuid DEFAULT gen_random_uuid (), data text);
CREATE TABLE
edb=*# insert into bla (data) values ('test') returning id;;
id
--------------------------------------
0da843d8-66f6-48f5-89b2-73c048a9c0b4
(1 row)
INSERT 0 1
edb=*#
[/code]