Conditionnel INSERT INTO dans postgres
Je suis en train d'écrire une procédure de réservation pour une maquette d'avion de réservation de la base de données et ce que je veux vraiment, c'est quelque chose comme ceci:
IF EXISTS (SELECT * FROM LeadCustomer
WHERE FirstName = 'John' AND Surname = 'Smith')
THEN
INSERT INTO LeadCustomer (Firstname, Surname, BillingAddress, email)
VALUES ('John', 'Smith', '6 Brewery close,
Buxton, Norfolk', cmp.testing@example.com');
Mais Postgres ne prend pas en charge IF
déclarations sans chargement le PL/pgSQL extension. Je me demandais si il y avait moyen de faire l'équivalent de ce ou si il va juste y avoir une certaine interaction de l'utilisateur dans cette étape?
- Pourquoi ne pas charger le PL/pgSQL extension, alors?
- Travailler avec l'installation de postgres sur les ordinateurs de test. À l'aide de cette extension n'est pas dans les spécifications.
Vous devez vous connecter pour publier un commentaire.
Qui commande spécifique qui peut être fait comme ceci:
Il va insérer le résultat de l'instruction select, et le
select
ne retournent une ligne si le client n'existe pas.La réponse ci-dessous n'est plus pertinente. Postgres 9.5 a été libéré quelques années plus tard avec une meilleure solution.
Postgres n'avons pas de "upsert la fonctionnalité" sans l'ajout de nouvelles fonctions.
Ce que vous devez faire est d'exécuter la requête de sélection et de voir si vous avez les lignes correspondantes. Si vous le faites, puis l'insérer.
Je sais que vous êtes de ne pas vouloir un upsert exactement, mais c'est à peu près la même.