为什么这 SELECT 最近添加的记录不起作用

Why this SELECT of the recent added records doesn't work

我试图 SELECT 刚刚插入的记录,但似乎没有用。

示例:

create table tt_teste (id bigserial, descricao varchar);

with inseridos as (
  insert into tt_teste (descricao) values('Test 1') returning id
)
select *
from tt_teste
where id in (select id from inseridos);

我尝试用另一种方式重写,但结果是一样的。

with inseridos as (
  insert into tt_teste (descricao) values('Test 2') returning id
)
select *
from inseridos i
  join tt_teste t on t.id = i.id;

结果总是空的。即使我将 WHERE 更改为“where 1=1 or id in (select id from inseridos)”,新记录也不会显示。他们出现在接下来的 运行.

我这样做是因为我想 SELECT 并在另一个 table 中插入更多来自 JOIN 的数据,但数据库无法 select 刚刚插入的记录.发现某种并发问题。

你可以做到

with inseridos as (
  insert into tt_teste (descricao) values('Test 1') returning id
)
select *
from inseridos;

或者如果您想要刚刚插入的其他字段,则

with inseridos as (
  insert into tt_teste (descricao) values('Test 1') returning *
)
select *
from inseridos;

除非您有一些计算值、填充某些字段的触发器或您在问题中没有说明的某些其他自动化,否则应该不会有太多要检索的内容。