Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/03/2011, 10h05   #1
Futur Membre du Club
 
kaayna kaayna
Inscription : novembre 2006
Messages : 146
Détails du profil
Informations personnelles :
Nom : kaayna kaayna
Localisation : Belgique

Informations forums :
Inscription : novembre 2006
Messages : 146
Points : 15
Points : 15
Par défaut Inserer si nouveau et mettre à jour si l'enregistrement existe

* Bonjour, *

je cherche comment mettre à jour une ligne et si cette dernière n’existe pas je l'ajoute !

1,a1,b1,c1,d1

2,a2,b2,c2,d2

3,a3,b3,c3,d3

4,a4,b4,c4,d4

5,a5,b5,c4,d5

si dans cet enregistrement les valeurs b(x),et c(x) existent déjà alors il suffit juste de modifier la valeur d; Si non ajouter l'enregistrement.

exemple pour l'enregistrement suivant : a80,b2,c2,d874 il faut une mis à jour de la valeur d2 par d874 .

merci
kaayna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2011, 10h10   #2
Membre Expert
 
Homme
Responsable de service informatique
Inscription : janvier 2009
Messages : 1 081
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2009
Messages : 1 081
Points : 1 875
Points : 1 875
Bonjour,
Je dira qu'il faut faire
Code SQL :
1
2
 
INSERT INTO(...) VALUES(..) UPDATE DUPLICATES

Si je ne m'abuse, la recherche d'un "duplicat" se base uniquement sur la clé primaire de la table (c'est le cas sur MaxDB).

Tatayo.
tatayo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2011, 18h04   #3
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
bonjour


quel moteur ?

sous FIREBIRD, c'est

Code :
1
2
3
UPDATE OR INSERT INTO (....)
VALUES (....)
Matching (....)
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2011, 09h06   #4
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Architecte de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 1 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
Citation:
je cherche comment mettre à jour une ligne et si cette dernière n’existe pas je l'ajoute !

1,a1,b1,c1,d1

2,a2,b2,c2,d2

3,a3,b3,c3,d3

4,a4,b4,c4,d4

5,a5,b5,c4,d5

si dans cet enregistrement les valeurs b(x),et c(x) existent déjà alors il suffit juste de modifier la valeur d; Si non ajouter l'enregistrement.

exemple pour l'enregistrement suivant : a80,b2,c2,d874 il faut une mis à jour de la valeur d2 par d874 .

merci


Quel est votre SGBD? tous n'implémente pas une syntaxe pour celà...
En SQL SERVER c'est MERGE (depuis la version 2008).
Sinon vous devez tester l’existence puis en déduire si c'est un update ou un insert.
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2011, 18h45   #5
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 445
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 445
Points : 7 532
Points : 7 532
Tout dépend...
Si les lignes sont à traiter une à une, il suffit de laisser le SGBD traiter la chose tout seule. La commande INSERT échouera si la clé existe déjà, la commande UPDATE ne s'exécutera pas si la clé n'existe pas encore. En exécutant l'UPDATE avant l'INSERT, on limite le nombre d’opérations.

Si les lignes à traiter sont le résultat d'une requête, là encore une requête UPDATE suivie d'une requête INSERT répond à toutes les problématiques :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
UPDATE  matable AS  tbl
SET     (   valeurs )
    =   (   SELECT  qry.valeurs
            FROM    marequete   AS qry
            WHERE   qry.cle = tbl.cle
        )
;
INSERT  INTO    matable
SELECT  *
FROM    marequete   AS qry
WHERE   NOT EXISTS
        (   SELECT  1
            FROM    matable AS tbl
            WHERE   tbl.cle = qry.cle
        )
;
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2011, 11h09   #6
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
Le mieux serait d'utiliser l'instruction SQL MERGE qui est normative !

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h46.


 
 
 
 
Partenaires

Hébergement Web