簡體   English   中英

如何將一個 PostgreSQL 查詢的返回值傳遞給另一個?

[英]How to pass a return value from one PostgreSQL query to another?

我有兩個疑問。 第一個創建一個新用戶。 該表具有三個字段, idnameemail id字段是一個自動增量值。

第二個查詢使用 ID 值創建與該用戶相關的附加數據。

如何將第一個查詢的RETURNING值傳遞給第二個查詢?

例子:

INSERT INTO users (
  name, 
  email
) VALUES (
  'John Doe',
  'johndoe@whatever.com'
) RETURNING id;

INSERT INTO users_stuff (
  user_id,
  money,
  hasCar
) VALUES (
  id,
  1000,
  false
);

上面的示例不起作用,因為第二個查詢永遠不會收到第一個的RETURNING值,這將是新記錄的自動增量 ID。

不過有辦法嗎?

使用 CTE:

WITH u AS (
      INSERT INTO users (name, email)
          VALUES ('John Doe', 'johndoe@whatever.com')
          RETURNING id;
     )
INSERT INTO users_stuff (user_id, money, hasCar) 
    SELECT u.id, 1000, false
    FROM u;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM