INSERT UPDATE conditionnels.
Fermé
pcsystemd
Messages postés
691
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
15 janvier 2024
-
9 mars 2020 à 12:16
Reivax962 Messages postés 3671 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 3671 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 bloqué - Guide
- Windows update 0x80070643 - 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
3671
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
691
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
15 janvier 2024
22
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
3671
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...