j'ai 3 tables professionals
, services
et feature_professional
je dois insérer des données dans lors de l'insertion d'un professional
. C'est le sql que j'ai essayé.PostgreSQL 2 relations Insertion à la fois
WITH professionals as (INSERT INTO professionals(id, company_id, first_name)
VALUES (1, 1, 'peter') RETURNING *)
INSERT INTO services(id, professional_id, name)
VALUES (1, (select professionals.id from professionals), 'haircut'),
INSERT INTO feature_professional(id, professional_id, feature_id, enabled)
VALUES
(1, (select professionals.id from professionals), 1, true)
J'ai aussi essayé différentes variations de ce emballage toutes les instructions d'insertion à l'intérieur entre parenthèses, mais toujours pas de chance. L'erreur que j'obtiens est un syntax error
.
ERROR: syntax error at or near "INSERT"
LINE 106: INSERT INTO feature_professional
Quelle est la syntaxe correcte pour accomplir ceci? Je sais que si je sors la troisième déclaration insert
la requête fonctionne. Par exemple:
WITH professionals as (INSERT INTO professionals(id, company_id, first_name)
VALUES (1, 1, 'peter') RETURNING *)
INSERT INTO services(id, professional_id, name)
VALUES (1, (select professionals.id from professionals), 'haircut')
Si je fais 2 déclarations de cte avec un insert à l'intérieur d'eux ne va pas créer 2 enregistrements dans la DB? – Rodrigo
Je n'ai jamais inséré dans un cte auparavant, donc j'essaye de le faire [** DEMO **] (http://sqlfiddle.com/#!17/23e05/2) mais après l'insertion, la table ne montre aucune ligne insérée. Est-ce que cela devrait fonctionner? –
Cela fonctionne et c'est essentiellement ce que j'ai dans mon application en ce moment. [DEMO] (http://sqlfiddle.com/#!17/23e05/9). – Rodrigo