gpt4 book ai didi

sql - 在 INSERT 语句的 RETURNING 中包含表名

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

我有一个类似这样的 INSERT 语句,它返回插入的 ID:

INSERT INTO encyclopedias (page_id)
SELECT page.id FROM pages
RETURNING id;

INSERT INTO cookbooks (page_id)
SELECT page.id FROM pages
RETURNING id;

返回的内容如下:

 id 
----
1
2

id
----
3
4

解析输出时,我想知道 ID 来自哪个表,例如:

encyclopedia id
----
1
2

cookbook id
----
3
4

或:

table, id
----
encyclopedias, 1
encyclopedias, 2

table, id
----
cookbooks, 3
cookbooks, 4

我该怎么做?

最佳答案

有一个简单的解决方案可以使用系统列 tableoid 自动执行此操作.

这是源表的内部OID(对象ID),可以转换为regclass,将其转换为实际的表名。

INSERT INTO encyclopedias (page_id)
SELECT id FROM pages
RETURNING tableoid::regclass::text AS table, page_id AS id;

准确返回您想要的输出:

table         | id
--------------+----
encyclopedias | 1
encyclopedias | 2

如果您更改 FROM 子句中的表(如您的示例),则无需调整 RETURNING 子句。

相关:

关于sql - 在 INSERT 语句的 RETURNING 中包含表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40368522/

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