1
votes

Référencer l'ID inséré dans plusieurs transactions d'insertion dans Postgres

Je dois créer une requête SQL qui doit pouvoir insérer des données dans une première table, saisir l'ID inséré puis l'utiliser comme clé étrangère dans les tables suivantes.

WITH inserted AS (
    INSERT INTO firstTable (name) VALUES ('somename') RETURNING id
)

SELECT * FROM inserted; -- this has the inserted id

INSERT INTO secondTable (name, foreign_id) VALUES ('someexternalname', ???)

Donc comment référencer l ' id dans inséré dans l'insert secondTable ?


0 commentaires

3 Réponses :


0
votes

Vous pouvez essayer ceci:

INSERT INTO secondTable (name, foreign_id) VALUES ('someexternalname', (SELECT 
MAX (id) FROM firstTable))


0 commentaires

2
votes

Vous pouvez faire ceci:

WITH inserted AS (
    INSERT INTO firstTable (name) VALUES ('somename') RETURNING id
)

INSERT INTO secondTable (name, foreign_id)
SELECT
'someexternalname',
id
FROM inserted;


0 commentaires

3
votes

Vous avez terminé ce pourcentage de 80%, le SQL complet est:

with inserted as (
 insert into first_table(name) values ('somename') returning id
)
insert into second_table(name, foreign_id) select 'someexternalname',id from inserted


0 commentaires