1

我有两个疑问。第一个创建一个新用户。该表具有三个字段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。

不过有办法吗?

4

1 回答 1

2

使用 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;
于 2021-02-17T20:57:24.547 回答