加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

RETURNING返回的PostgreSQL存储值

发布时间:2020-12-13 16:13:24 所属栏目:百科 来源:网络整理
导读:在PostgreSQL中,可以将RETURNING放在INSERT语句的末尾,以便在该值由SERIAL类型自动设置时返回行的主键值. 题: 如何将此值存储在可用于将值插入其他表的变量中? 编辑: 请注意,我想将生成的id插入到多个表中.据我所知,WITH子句仅对单个插入有用.我认为这可
在PostgreSQL中,可以将RETURNING放在INSERT语句的末尾,以便在该值由SERIAL类型自动设置时返回行的主键值.

题:
如何将此值存储在可用于将值插入其他表的变量中?

编辑:
请注意,我想将生成的id插入到多个表中.据我所知,WITH子句仅对单个插入有用.我认为这可能必须在PHP中完成.

这实际上是糟糕设计的结果;如果没有自然键,除非主键上有句柄,否则很难获取唯一的行;选择的答案反映了所提供的最佳答案,但如果给出了更好的答案,我会选择.

… that can be used to insert values into other tables?

您甚至可以使用data-modifying CTE在单个SQL语句中执行此操作:

WITH i1 AS (
   INSERT INTO tbl1(txt)
   VALUES ('foo')
   RETURNING tbl1_id
   )
INSERT INTO tbl2(tbl1_id)
SELECT * FROM i1

需要PostgreSQL 9.1或更高版本.

SQL Fiddle.

回复问题更新

您还可以在单??个查询中插入多个表:

WITH i1 AS (
   INSERT INTO tbl1(txt)
   VALUES ('foo')
   RETURNING tbl1_id
   ),i2 AS (
   INSERT INTO tbl2(tbl1_id)
   SELECT tbl1_id FROM i1
   )
INSERT INTO tbl3(tbl1_id)
SELECT tbl1_id FROM i1;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读