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 ?
3 Réponses :
Vous pouvez essayer ceci:
INSERT INTO secondTable (name, foreign_id) VALUES ('someexternalname', (SELECT
MAX (id) FROM firstTable))
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;
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