具有触发器的子查询返回多行

v6ylcynt  于 2022-10-15  发布在  PostgreSQL
关注(0)|答案(1)|浏览(231)

我希望订阅我的代码来收听Postgres生产的insert events。我的前端可以检测到特定表的insert queries,但当我尝试返回payload时,我得到两种类型的错误。
我删除了一些业务逻辑,因此它可能不是一个100%有效的示例。
第一个错误,如果我使用notify而不是pg_notify,我不能返回新行。但是当我使用pg_notify时,我得到一个查询错误,指出more than one row returned by a subquery used as an expression
以下是触发器的一个示例:

CREATE OR REPLACE FUNCTION notify_link_insert() RETURNS trigger LANGUAGE plpgsql AS $$
 begin
  select pg_notify("link_topic_manager", to_jsonb(new));
 return new;
end;
$$;

CREATE TRIGGER link_manager_trigger AFTER INSERT ON link FOR EACH ROW EXECUTE PROCEDURE notify_link_insert();

查询:

INSERT INTO link (network_id, sender_id, target_id, protocol) VALUES ((SELECT id from network WHERE name='ZZ'), 'zz44', 'zzz', 'z123');
fnvucqvd

fnvucqvd1#

答案在上面的注解中,其中一个我需要使用单引号,另两个我必须删除数据库中的记录并再次执行查询。

相关问题