当前位置: 首页 > 知识库问答 >
问题:

postgresql pg_notify函数和row_to_json函数怎么结合使用?

空谦
2023-04-26

我要使postgresql主动发送通知,将指定数据表的指定一行的数据转换为json字符串,作为通知内容,将通知发给其他的进程,

通过查看官网,我发现有pg_notify和row_to_json这两个函数,pg_notify可以使postgresql主动发送通知给其他进程,row_to_json可以使一行转换为json。

我将这两个写在一起,有以下两个写法,但都抛出了错误

SELECT pg_notify('hello',  (
select  (select row_to_json(t) as json_obj  from (select '1' as a) t) b 
))
SELECT pg_notify('hello',  (
select row_to_json(t.*) as json_obj from (select '1' as a) t
));

错误信息为

SQL 错误 [42883]: ERROR: function pg_notify(unknown, json) does not exist
  Hint: No function matches the given name and argument types. You might need to add explicit type casts.

如果不用row_to_json,这样写没有问题:

SELECT pg_notify('hello',  (select '1' as a) );

怎么解决该问题,怎么将pg_notify和row_to_json这两个函数写在一起不报错?

共有2个答案

子车才捷
2023-04-26

postgres里面的函数是强类型的, pg_notify(text, text) 这个是函数定义, 用json返回的类型是json, 匹配不到pg_notify函数, 所以报错. 转换一下类型 ::text 试试.

巩衡
2023-04-26

你需要将 json 类型转换为 text 类型:

SELECT pg_notify('hello', (
select row_to_json(t.*)::text as json_obj from (select '1' as a) t
));

参考:
pg_notify
类型转换

 类似资料:
  • 问题内容: 我是ORM的新手,我需要一些帮助来理解一些东西。 假设我有以下标准SQL查询: 我想在JPA中使用。 我有一个与测试实体一对多关系的检验实体。(检查有很多测试)我尝试用JPQL编写此代码: 1)如何编写COUNT子句?我必须将计数应用于测试表中的元素,但testList是一个集合,所以我不能做这样的事情 2)假设解析为1,将返回哪种类型的对象。绝对不是检查对象…如何使用结果? 问题答案

  • 通常你在应用中定义了一个结构体,那么你也可能需要这个结构体的(指针)对象集合,比如: type Any interface{} type Car struct { Model string Manufacturer string BuildYear int // ... } type Cars []*Car 然后我们就可以使用高阶函数,实际上也

  • 如果你想定义一个类,你只需要使用class关键字。 class MainActivity{ } 它有一个默认唯一的构造器。我们会在以后的课程中学习在特殊的情况下创建其它额外的构造器,但是请记住大部分情况下你只需要这个默认的构造器。你只需要在类名后面写上它的参数。如果这个类没有任何内容可以省略大括号: class Person(name: String, surname: String) 那么构造函

  • 函数(我们Java中的方法)可以使用fun关键字就可以定义: fun onCreate(savedInstanceState: Bundle?) { } 如果你没有指定它的返回值,它就会返回Unit,与Java中的void类似,但是Unit是一个真正的对象。你当然也可以指定任何其它的返回类型: fun add(x: Int, y: Int) : Int { return x + y } 小

  • 本文向大家介绍Python函数和模块的使用总结,包括了Python函数和模块的使用总结的使用技巧和注意事项,需要的朋友参考一下 函数和模块的使用 在讲解本章节的内容之前,我们先来研究一道数学题,请说出下面的方程有多少组正整数解。 $$x_1 + x_2 + x_3 + x_4 = 8$$ 事实上,上面的问题等同于将8个苹果分成四组每组至少一个苹果有多少种方案。想到这一点问题的答案就呼之欲出了。 $

  • 我有以下Haskell表达式: 而我也有下面的表达: 我正试图弄清楚上面是否等同于第一个表达式。然而,当我在GHCI中尝试上面的表达式时,我得到了一个错误: 我不知道为什么这个表达不起作用。既然使用了函数组合,那么表达式的计算值不应该是: