gpt4 book ai didi

sql - 带有条件的多个 INSERT 和 SELECT 在一个请求中返回

转载 作者:行者123 更新时间:2023-11-29 13:56:44 24 4
gpt4 key购买 nike

在消息系统中,我想录制一条新消息。由于技术原因,我的系统中有两个表。一个引用对话,另一个引用链接到这些对话的消息。

conversation

conversation_id
---------------
3
4
8
12

(*) conversation_id 是连续剧。

message

message_id | conversation_id | timestamp | sender_id | receiver_id | message
------------+-----------------+---------------------+-----------+-------------+-------------------------------
12 | 3 | 2015-05-13 15:46:36 | 1 | 2 | Hello Bob! How are you doing?
13 | 3 | 2015-05-13 15:55:10 | 2 | 1 | I'm fine, and you?

当系统记录新消息时,我希望它自动创建相应的对话(如果尚未完成)。我希望声明返回完整的对话(意味着链接到刚刚添加的对话的所有消息)作为结果。

因此系统会插入尚未创建的对话,然后插入消息并最终返回整个对话。

所以我只想将这个元组提供给 postGreSQL (timestamp, sender_id, receiver_id, message) 并让它处理对话部分(创建或选择)。

我想恢复完整的对话,就像我在做:

SELECT * FROM message WHERE conversation_id="xxxx"

是否可以在一条 SQL 语句中完成所有这些操作?

我发现我们可以使用与 INSERT 和 SELECT 操作相关的 CTE,但我不知道如何表达我的具体要求。

最佳答案

您可以创建一个 PL/pgSQL接受您的元组作为参数的存储过程,检查您的表并执行任何必要的插入操作。或者,您可以使用 rules 来完成一些更巧妙的事情。或 triggers ,甚至 CTE,但我不够圆滑,无法轻松描述如何实现。

关于sql - 带有条件的多个 INSERT 和 SELECT 在一个请求中返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30264336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com