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

如何创建Java客户端应用程序。“捕获”(通过JDBC)触发器过程查询产生的结果吗?

郗福
2023-03-14

我试图理解通过JDBC与pgSQL数据库(服务器)通信的java(客户机)应用程序如何“捕获”查询生成的结果,该查询将在记录插入表时触发(使用触发器)。

因此,为了澄清这一点,我通过JDBC安装了一个触发器过程,每当一条记录被插入到给定的数据库表中时,它就准备好执行一个查询,并且从这个查询的执行将产生一个输出(我想是封装在一个resultSet中的)。我的问题是,我不知道客户端如何知道这些异步生成的结果。

我想知道JDBC是否支持任何“回调”机制,能够捕捉在“INSERT INTO表”条件下通过触发过程触发的查询所产生的结果。如果没有这样的“回调”机制,实现这个结果的最佳方法是什么?

提前感谢:)

共有1个答案

百里芷阳
2023-03-14

触发器不能返回结果集。

无法将这样的结果发送给JDBC驱动程序。

有一些肮脏的黑客可以用来从触发器向客户端获取结果,但它们都是这样。比如:

>

  • DECLARE结果集的游标,然后将游标名称作为NOTIFY有效负载发送,以便应用程序可以FETCH ALL from

    创建一个临时表并通过通知

    更典型的做法是,将触发器与应用程序通信所需的任何内容附加到一个为此目的而存在的表中,并在触发触发器的操作运行后让应用程序从中选择

    在大多数情况下,如果您需要这样做,您可能会使用一个触发器,其中规则函数更适合。

  •  类似资料:
    • 问题内容: 这是我的代码: 这就是抛出的错误: 可能是此错误的原因和解决方案。请帮助。谢谢。 问题答案: 不要在JDBC和MySQL中使用定界符。分隔符仅由MySQL控制台使用,以便它可以告知您键入的触发器,存储过程等何时结束。在JDBC中,您将整个SQL字符串放在一起,然后将其发送到数据库。因为您可以控制何时将SQL发送到数据库,所以不需要使用定界符。 我从代码中删除了这两行和定界符的使用,并将

    • 问题内容: 当前,我有一个效率低下的同步生成器,该生成器按顺序发出许多HTTP请求并产生结果。我想使用请求并使其并行化,从而加快此生成器的速度,但我想将其保留为普通生成器(而不是PEP 525异步生成器 ),以便不需要调用它的非异步代码被修改。如何创建这样的生成器? 问题答案: ,目前几乎没有文献记录,它接受一个协程或期货的迭代,并按输入期货的完成顺序返回一个迭代的期货。 通常 ,您可以从函数内部

    • 数据库游标定义与 JDBC ResultSet API 惊人地相似。 > 数据库游标可以只向前的ResultSet.TYPE_FORWARD_ONLY。 数据库游标可以滚动,甚至可以像ResultSet一样有一个敏感度设置。TYPE_SCROLL_SENSITIVE 还支持可保持性,如ResultSet.HOLD_CURSORS_OVER_COMMIT 甚至对位置更新/删除的支持也被复制到JDBC

    • 当我尝试为部署构建时,出现了一个错误。 我键入了以下命令: python3设置。py-py2app 这将导致以下错误(这是最后两行输出): 正在复制文件/Applications/Xcode。app/Contents/Developer/Library/Frameworks/Python3。framework/Versions/3.7/Resources/Python。app/Contents/M

    • 在网上做了一些关于这个主题的研究后,我目前设法让事情与此代码一起工作: 我的问题是,当我点击我的JSP按钮时,文件会被下载,但方法不会重定向到“索引”。jsp视图,并给我一个非法状态例外: 严重:Servlet。servlet jsp的service()引发了异常java。lang.IllegalStateException:已为此响应调用getOutputStream() 关于可能导致此问题的原

    • 我需要一个用于java spring应用程序的graphQL客户端,以与另一个基于graphQL API的微服务通信。我知道Apollo Android,但它似乎没有用maven实现(也许你知道maven的一些链接或示例等)。有什么想法和建议吗?提前感谢!