IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

insert on duplicate key


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 24
    Points : 17
    Points
    17
    Par défaut insert on duplicate key
    Bonjour,

    J'utilise le script suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    INSERT
    INTO   XXX.Employee_Roles_Role_Employees
           (
    			Employee_Id,            
    			Role_Id)
     
    SELECT		
    Employee_Id,
    2
    FROM  XXX.dbo.Employee
    ON DUPLICATE KEY UPDATE set Role_Id=3;
    et quand j'execute j'ai l'erreur suivante :

    Msg*156, Niveau*15, État*1, Ligne*12
    Syntaxe incorrecte vers le mot clé 'ON'.

    dans ma table Employee_Roles_Role_Employees, j'ai juste de champs (FK) qui référencent des champs dans d'autres tables.

    avez vous une idée svp??
    je ne sais pas pourquoi ce script ne marche pas.
    Merci d'avance

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Parce qu'à partir de ON DUPLICATE, ce n'est plus de SQL.

    Créez une requête qui fait une jointure externe entre Employee et Employee_Roles_Role_Employees (joli nom), gérer dans votre requête ce que vous faites si l'employé existe déjà, et insérez le résultat de cette requête.

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    Je ne vois pas trop comment faire ceci, est ce que vous pouvez me donner un petit exemple simplifié SVP (ajouter une nouvelle requete et insérer le résultat) ???

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    J'imagine quelque chose de ce genre-là (plutôt que de dire si l'employé à déjà un rôle alors 3, j'ai écrit role_max + 1, vous pouvez changer si ça ne convient pas) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    INSERT INTO XXX.Employee_Roles_Role_Employees (Employee_Id, Role_Id)
    SELECT
        EM.Employee_Id,
        coalesce(max(ER.Role_Id)+1, 2)
    FROM
        XXX.dbo.Employee EM
        LEFT OUTER JOIN XXX.Employee_Roles_Role_Employees ER
          ON ER.Employee_Id = EM.Employee_Id
    GROUP BY
        EM.Employee_Id;

Discussions similaires

  1. INSERT ON DUPLICATE KEY UPDATE
    Par karl2mil1 dans le forum Requêtes
    Réponses: 1
    Dernier message: 21/01/2011, 15h47
  2. Insert, on duplicate key update
    Par knolz dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 30/06/2010, 08h33
  3. INSERT .. ON DUPLICATE KEY UPDATE fait que des INSERT !
    Par umeboshi dans le forum Requêtes
    Réponses: 2
    Dernier message: 30/07/2008, 09h40
  4. Insert avec Duplicate KEY !
    Par chrislcf dans le forum Requêtes
    Réponses: 1
    Dernier message: 24/06/2008, 11h47
  5. INSERT ... ON DUPLICATE KEY UPDATE
    Par luffy san dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 17/10/2005, 17h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo