- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我一直在玩 PostgreSQL 的通知系统,但终究无法弄清楚为什么 pg_notify(text, text) 永远不起作用。这个功能没有过多的记录,我找不到很多在野外使用它的例子,所以我想没有人会介意我在这里问。
运行以下命令完全符合预期:
LISTEN my_channel;
NOTIFY my_channel, 'my message text';
然而,使用 pg_notify() 函数会返回一个空值,并且不会发送任何通知。也没有报错。使用的一个例子是:
SELECT pg_notify('my_channel', 'my message text');
我可以使用 NOTIFY 函数,但我的目标是将通知简化为如下查询:
select pg_notify(get_player_error_channel(username)::TEXT, 'test'::TEXT)
from player;
我想我一定遗漏了一些荒谬的东西,但我一直没有找到原因。可以在此处找到讨论 NOTIFY 的页面:http://www.postgresql.org/docs/9.0/static/sql-notify.html
在上面,它提到了 pg_notify(),这让我假设不会有太大的不同。
pg_notify To send a notification you can also use the function pg_notify(text, text). The function takes the channel name as the first argument and the payload as the second. The function is much easier to use than the NOTIFY command if you need to work with non-constant channel names and payloads.
一如既往地感谢您的帮助
编辑:数据库版本为:“i686-pc-linux-gnu 上的 PostgreSQL 9.0.3,由 GCC gcc (GCC) 4.2.4,32 位编译”
最佳答案
我已经在 PostgreSQL 邮件列表 ( http://archives.postgresql.org/pgsql-bugs/2011-03/msg00041.php ) 上讨论了这个问题,并被告知了该行为的原因。
他们的回答是“..你必须双引号 relnames(听“测试”)。如果你希望服务器不要折叠它们。 pg_notify 接受一个字符串,而不是一个relname,它使用不同的规则。”(感谢 Merlin 和 Tom)
这意味着以下内容有效,因为 channel 始终强制为小写
LISTEN ERRORCHANNEL;
NOTIFY ERRORCHANNEL, 'something!';
NOTIFY eRrorChanNel, 'something!';
如果您要在 channel 名称周围添加双引号,大小写将保持不变。
因此,对于以下内容,您会收到第一个通知,但不会收到第二个通知:
LISTEN "ERRORCHANNEL";
NOTIFY "ERRORCHANNEL", 'something!';
NOTIFY "eRrorChanNel", 'something!';
同样,以下将起作用,因为双引号强制保持 ERRORCHANNEL 的大小写:
LISTEN "ERRORCHANNEL";
SELECT pg_notify('ERRORCHANNEL', 'something!');
虽然这行不通:
LISTEN ERRORCHANNEL;
SELECT pg_notify('ERRORCHANNEL', 'something!');
在这种情况下,ERRORCHANNEL 不在 LISTEN 命令中的双引号中,因此 PostgreSQL 强制将其小写。 channel 参数的类型是文本而不是 relname,因此在 pg_notify() 函数中大小写保持不变。 channel 一起不匹配 (ERRORCHANNE != errorchannel) 因此永远不会收到通知。
关于database - 在 PostgreSQL 中使用 pg_notify(text, text) 收听/通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5173323/
我目前正在创建一个正则表达式来拆分所有匹配以下格式的字符串:&[text(text - text text) !text]。这里的文本实际上可以是任何字符。并且间距很重要。文本将如图所示列出。 我已经
这个问题在这里已经有了答案: Remove duplicate commas and extra commas at start/end with RegExp in Javascript, and
我有以下代码。 from xml.dom.minidom import Document doc = Document() root = doc.createElement('root') doc.a
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Find text string in jQuery and make it bold 如何使用 jQuer
我使用 libmagic 在我的元素的 Web 界面中获取文件的 MIME 类型。我在 css 和 js 文件上得到文本/纯 mime 类型。 例如 chromium 显示以下警告: Resource
起初我必须阅读很多教程,但我仍然不知道我做错了什么...... 我想内联使用 4 个 div。在我想放置的那些 div 中:文本、图像、文本、文本。我希望中间文本自动设置为最大宽度。 我写了一个简单的
我想替换所有出现的 [b: "text"]至text使用 JavaScript 和 RegEx。目前我知道如何替换 [b: ""]至使用'/\[b: ""\]/g'但我不知道如果 " 之间有文本该怎么
这可能是一个幼稚的问题,但我想知道是否有比使用 text() 更好的方法将文本添加到绘图中。注意,我也在使用 layout()以及。具体来说,我有一个情节的一部分,我想在其中添加一些带有标题的文本,然
我必须反复从 latex 源粘贴代码,因此每次都必须做很多查找和替换操作('“a'=>'ä','” o'=>'ö',...) 。 有没有一种方法可以存储这些搜索和替换规则,例如,我可以通过一次按键执行
当我在Sublime Text 3代码屏幕中编写代码时,它连续地向右滑动,如图所示。我该怎么办? 请注意第10行。 最佳答案 如果您只想为当前 View (正在编辑的当前文件)激活自动换行,只需vie
是否有可能更改 sublime text 中的默认字体目录?我只想使用可移植 sublime 文本存储在我的 pendrive 上的字体,这样我就不必在我使用可移植 sublime 文本的每台机器上安
我是 Android 开发的新手,我有一个愚蠢的问题。如何将“文本字段”框放在一行中的文本旁边。 例子: Please Enter the number: [ ] 关于 "t
我想自动将“我的文本”更改为“我的文本”,因为这是用德语写的正确方式。引号可以在文本中的任何位置。 有没有一种简单的方法可以实现这一点? 解决方案应该检查第一个字符,最后一个字符,比如“this”,或
我想知道是否有特殊的语法来绑定(bind)与现有文本连接的文本。 像这样。 显然,这行不通。 什么是最佳实践? 使用 SL4。 最佳答案 使用StringFormat在 Binding 上。 WPF
我认为它应该打印“真实文本”,因为它相当于 true console.log('true text' || true ? 'text' : 'text1'); 但是,输出是“文本”;抱歉,如果是愚蠢的
有没有办法通过 css 打破文本,以便中间有一个“空白”?目前我正在通过手工打破文本来解决这个问题 -但这是愚蠢的。我知道有一个函数可以让文本在另一个 div 中结束和开始,但 IE 不支持它。 文本
我想为我的Tcl/Tk工具实现一个效果:在text控件中,根据具体情况,希望高亮一些线条的背景色,其他线条正常透明.有可能吗? 我尝试了一些选项,例如:-highlightbackground 、-i
我正在尝试解析原始维基百科文章内容,例如the article on Sweden ,使用re.sub()。但是,我在尝试替换 {{some text}} block 时遇到了问题,因为它们可以包含更
我试图先删除 ComboBox 中的所有内容。然后在其前面添加文本,但保留了一些旧文本。有没有办法重置或清除 ComboBox?或者我怎样才能最好地实现这一目标? public void GetBad
我知道我们应该创建 Example对象并将其传递给 nlp.update() 方法。根据 docs 中的示例, 我们有 for raw_text, entity_offsets in train_da
我是一名优秀的程序员,十分优秀!