sql >> Database >  >> RDS >> PostgreSQL

Postgres voegt waarde in van invoegen in andere tabel

U hebt een algemene tabelexpressie nodig voor dit soort insert-chaining:

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));

Een andere optie is om gewoon de lastval() . te gebruiken functie om te verwijzen naar de laatst gegenereerde reekswaarde:

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

Merk op dat u geen andere instructies mag hebben die reekswaarden tussen deze twee genereren.

Of gebruik de currval() functie:

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' is de standaardnaam die Postgres gebruikt voor een reeks die is gemaakt voor een serial kolom:



  1. Hoe ATAN() werkt in MariaDB

  2. Hoe alle instanties van een string in een database zoeken en vervangen?

  3. Operators voor het extraheren van JSON-subcomponenten

  4. PHP.net zegt dat md5() en sha1() niet geschikt zijn voor wachtwoord?