INSERT UPDATE conditionnels.
Fermé
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
-
9 mars 2020 à 12:16
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 10 mars 2020 à 08:46
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 10 mars 2020 à 08:46
A voir également:
- INSERT UPDATE conditionnels.
- Touche insert - Guide
- Windows update 0x80070643 - Accueil - Windows
- Windows update bloqué - Guide
- Asus live update - Télécharger - Utilitaires
- Disk boot failure insert system disk and press enter - Guide
2 réponses
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
Modifié le 9 mars 2020 à 15:30
Modifié le 9 mars 2020 à 15:30
Bonjour,
On peut tenter un UPDATE, vérifier le nombre de lignes affectées, et si c'est 0 faire l'INSERT.
En une seule requête, on peut faire INSERT ... ON CONFLICT UPDATE (https://www.postgresql.org/docs/current/sql-insert.html#SQL-ON-CONFLICT) L'idée est la même, mais à l'envers : SQL tente un INSERT, si ça marche pas il fait l'UPDATE. Ce qui signifie que tu dois avoir une clef primaire pour détecter le conflit.
Xavier
Edit : j'ai enlevé l'option MERGE, j'avais mal lu elle n'est pas supportée
On peut tenter un UPDATE, vérifier le nombre de lignes affectées, et si c'est 0 faire l'INSERT.
En une seule requête, on peut faire INSERT ... ON CONFLICT UPDATE (https://www.postgresql.org/docs/current/sql-insert.html#SQL-ON-CONFLICT) L'idée est la même, mais à l'envers : SQL tente un INSERT, si ça marche pas il fait l'UPDATE. Ce qui signifie que tu dois avoir une clef primaire pour détecter le conflit.
Xavier
Edit : j'ai enlevé l'option MERGE, j'avais mal lu elle n'est pas supportée
pcsystemd
Messages postés
702
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
6 novembre 2024
23
10 mars 2020 à 07:20
10 mars 2020 à 07:20
Merci .
Je vais faire des tests.
Je vais faire des tests.
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
10 mars 2020 à 08:46
10 mars 2020 à 08:46
Tu peux aussi faire, sur le modèle que tu suggérais,
IF EXISTS (SELECT...) THEN UPDATE... ELSE INSERT...
IF EXISTS (SELECT...) THEN UPDATE... ELSE INSERT...