sql >> Database >  >> RDS >> PostgreSQL

Kan ik de retourwaarde van INSERT...RETURNING gebruiken in een andere INSERT?

U kunt dit doen vanaf Postgres 9.1:

with rows as (
INSERT INTO Table1 (name) VALUES ('a_title') RETURNING id
)
INSERT INTO Table2 (val)
SELECT id
FROM rows

In de tussentijd, als je alleen geïnteresseerd bent in de id, kun je dit doen met een trigger:

create function t1_ins_into_t2()
  returns trigger
as $$
begin
  insert into table2 (val) values (new.id);
  return new;
end;
$$ language plpgsql;

create trigger t1_ins_into_t2
  after insert on table1
for each row
execute procedure t1_ins_into_t2();


  1. Primaire sleutels retourneren van een gekoppelde server in SQL Server (T-SQL-voorbeelden)

  2. Sequenties niet beïnvloed door transacties?

  3. Is er een manier om OracleCommand.BindByName te dwingen standaard waar te zijn voor ODP.NET?

  4. Manieren om SQL Server te repareren Detecteerde een op logische consistentie gebaseerde I/O-fout