如何在SQL函数中获取INSERT的返回值并在同一函数中使用它?

vde*_*nne 0 sql postgresql function

这是一个完成标题的例子,这是我的函数的内部(我使用postgresql,但我想这是纯SQL语言)

$$
  INSERT INTO foo VALUES (DEFAULT, $1) RETURNING id;
  INSERT INTO link_foo_to_bar VALUES (1, <?>);
$$ language SQL;
Run Code Online (Sandbox Code Playgroud)

这里要注意两件事,我返回第一个插入的id,如何捕获它以使用返回的id作为第二个插入的第二个参数标记为<?>

Gor*_*off 5

您可以使用CTE捕获从第一个插入插入的行:

with firstinsert as (
      INSERT INTO foo VALUES (DEFAULT, $1) RETURNING id
     )
INSERT INTO link_foo_to_bar 
    select 1, id
    from firstinsert;
Run Code Online (Sandbox Code Playgroud)