PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Czy mogę użyć zwracanej wartości INSERT...RETURNING w innej INSERT?

Możesz to zrobić, zaczynając od Postgres 9.1:

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

W międzyczasie, jeśli interesuje Cię tylko identyfikator, możesz to zrobić za pomocą wyzwalacza:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. nie można uruchomić prostego wstawiania PostgreSQL

  2. Mapowanie hibernacji między enum PostgreSQL i enum w Javie

  3. Jak zmienić kodowanie znaków w bazie danych postgres?

  4. Zapytanie o elementy tablicy wewnątrz typu JSON

  5. Agent PostgreSQL ponownie w komisji SQL Standard