Bonjour,
Si l'enregistrement n'existe pas je veux l'insérer et s'il existe je veux faire un update de l'enregistrement.
Cela peut il se faire en une instruction ?
Merci,
Christophe
Bonjour,
Si l'enregistrement n'existe pas je veux l'insérer et s'il existe je veux faire un update de l'enregistrement.
Cela peut il se faire en une instruction ?
Merci,
Christophe
Bonjour,
Oui, c'est possible. Pour cela, il faut utiliser non pas INSERT ou UPDATE, mais l'instruction MERGE
François DORIN
Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
Site internet | Profils Viadéo & LinkedIn
---------
Page de cours : fdorin.developpez.com
---------
N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels
Bonjour,
Avec certains SGBDs, il faut utiliser INSERT INTO... UPDATE DUPLICATE, et avec MySQL INSERT INTO... ON DUPLICATE KEY UPDATE...
C'est pour cela qu'il faut toujours préciser le SGBD concerné dans les questions.
Tatayo.
Et pour enfoncer le clou sous FIREBIRD, il y a :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 UPDATE OR INSERT INTO {tablename | viewname} [(<columns>)] VALUES (<values>) [MATCHING (<columns>)] [RETURNING <values> [INTO <variables>]]
Merci d'ajouter un sur les tags qui vous ont aidé
MERGE st l'instruction normalisée depuis la version 1999 de la norme SQL !
Pourquoi certains SGBD merdique veulent-ils faire autre chose ???
C'est particulièrement stupide car le MERGE permet de faire jusqu'à 3 choses :
- INSERT si condition non trouvée dans la cible
- UPDATE si condition trouvée entre cible et source
- DELETE si condition non trouvée dans la source.
En outre chaque branche de condition peut faire l'objet d'un prédicat supplémentaire...
Aucune des solutions de ON DUPLICATE KEY (de MySQmerde) ou de INSERT OR UPDATE de FIREBIRD ne peut prétendre à la même souplesse !
A +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Bonjour,
pour répondre @SQLPro qui semble croire que Firebird ne respecte pas la norme MERGE est une instruction implémentée depuis la version 2.1 de Firebird. La version 3 de Firebird a encore amélioré MERGE (désolé je n'ai pas trouvé de lien "simple" seulement une présentation de 2014 page 7)
Le INSERT OR UPDATE est une vieille "habitude" gardée pour compatibilité avec de vieilles versions.
Conclusion, ne pas donner d'avis tranché sans savoir
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
François DORIN
Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
Site internet | Profils Viadéo & LinkedIn
---------
Page de cours : fdorin.developpez.com
---------
N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager