sql >> Database teknologi >  >> RDS >> PostgreSQL

Postgres indsæt værdi fra indsæt i anden tabel

Du skal bruge et fælles tabeludtryk til denne form for indsættelseskæde:

with ta as (
  INSERT INTO tbl_b (status) VALUES ('OK') 
  RETURNING id
)
INSERT INTO tbl_a (name, tbl_b_reference) 
VALUES ('myName', (select id from ta));

En anden mulighed er blot at bruge lastval() funktion til at referere til den sidst genererede sekvensværdi:

INSERT INTO tbl_b (status) VALUES ('OK');
INSERT INTO tbl_a (name, tbl_b_reference) 
  VALUES ('myName', lastval());

Bemærk, at du ikke må have andre udsagn, der genererer sekvensværdier mellem disse to.

Eller brug funktionen currval():

INSERT INTO tbl_b (status) VALUES ('OK');
INSERT INTO tbl_a (name, tbl_b_reference) 
  VALUES ('myName', currval('tbl_b_id_seq'));

'tbl_b_id_seq' er standardnavnet Postgres bruger for en sekvens, der er oprettet til en serial kolonne:



  1. OR understøttes ikke med CASE Statement i SQL Server

  2. Opretter forbindelse til mysql i xampp uden adgangskode

  3. Sådan tjekker du din sessions ANSI_NULLS-indstilling i SQL Server

  4. 9 vitale opgaver, som DBA'er er ansvarlige for