Précédent   Forum du club des développeurs et IT Pro > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 11/07/2012, 13h41   #1
devalender
Inscrit
 
Inscription : mai 2004
Messages : 832
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 832
Points : 319
Points : 319
Par défaut Comprendre la syntaxe de Insert or Update

Bonjour a tous
j'ai besoin d'utiliser pour effectuer des mises a jour entre deux bases.
Mon problème est que je veut comprendre comment ça marche. pas trop a l'aise avec l'anglais
Pour le moment voila ce que je pense comprendre :

Code :
1
2
 
UPDATE OR INSERT INTO MATABLE (Champ1,Champ2)VALUES(:Champ1,:Champ2)
Dans cet exemple:
Si un des champs (champ1 ou champ2) est différents de l'ancien enregistrement, on a un UPDATE du champ concerné.
Si les deux champs (champ1 et champ2) sont differents de l'ancien enregistrement, on un INSERT.
Es vrai ?

Ensuite j'ai le cas suivant :
Code :
1
2
 
UPDATE OR INSERT INTO MATABLE (Champ1,Champ2)VALUES(:Champ1,:Champ2) matching (champ1)
Dans cet exemple :
A quoi sert la clause MATCHING

Merci pour vos éclaircissements
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2012, 13h52   #2
dehorter olivier
Membre Expert
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 917
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 : 917
Points : 1 240
Points : 1 240
Le MATCHING est là pour indiquer les colonnes qui vont déterminer si c'est le UPDATE qui doit être utiliser ou le INSERT

Ex (je dis bien exemple)
Tu utilises les colonnes NOM et PRENOM comme MATCHING. Ainsi si la donnée existe déjà avec ce nom ET prénom, l'UPDATE sera utilisé sinon il ajoute cette personne.
ATTENTION, il faut que la donnée NOM, PRENOM soit unique (imagines 2 homonyme, sur quelle personne doit porter l'UPDATE -d'où mon préambule sur "c'est un exemple")
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2012, 15h32   #3
devalender
Inscrit
 
Inscription : mai 2004
Messages : 832
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 832
Points : 319
Points : 319
Excuse moi mais es a dire que ma première réflexion est correcte ?

Si c'est le cas sans en l'absence de la clause MATCHING
il va utiliser la clé primaire de la table ?
(c'est ce que j'ai cru comprendre dans la doc en anglais)
merci
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2012, 15h41   #4
dehorter olivier
Membre Expert
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 917
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 : 917
Points : 1 240
Points : 1 240
Non pas forcement.

Si tu as un numéro d'ordre (auto-incrémenté) donc rarement connu, il ne peux te servir pour MATCHER la donnée, mais il faut que la ligne issue du MATCHING soit unique. Le mieux étant qu'il existe une contrainte d'unicité pour cette colonne ou cet ensemble de colonne. j'espère être clair ?
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/07/2012, 16h38   #5
devalender
Inscrit
 
Inscription : mai 2004
Messages : 832
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 832
Points : 319
Points : 319
ok la je pense avoir compris merci
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 07h34.


 
 
 
 
Partenaires

Hébergement Web