RETURNING返回的PostgreSQL存储值

前端之家收集整理的这篇文章主要介绍了RETURNING返回的PostgreSQL存储值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在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;

猜你在找的Postgre SQL相关文章