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

SQL Procédural MySQL Discussion :

Copier la ligne dans une autre table avec un Trigger After Update [MySQL-5.6]


Sujet :

SQL Procédural MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2015
    Messages : 16
    Points : 18
    Points
    18
    Par défaut Copier la ligne dans une autre table avec un Trigger After Update
    Bonjour a tous,

    Je cherche a creer un trigger AFTER UPDATE tout simple qui pour chaque ligne modifiee dans la table TABLE_1 ajoute cette ligne dans la table TABLE_2.

    Le code ci-dessous ne fonctionne que pour la 1ere valeur ajoutee. Ensuite il me retourne l'erreur suivante : SQL Error (1062): Duplicate entry '1' for key 'PRIMARY'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE DEFINER=`companyERP`@`%` TRIGGER `trigger` AFTER INSERT ON `Table_1` FOR EACH ROW BEGIN
    INSERT INTO Table_2 SELECT *
    FROM Table_1;
    END
    Ce code n'est pas bon car je recupere a chaque fois toutes les lignes de la table au lieu de prendre uniquement celle en cours, mais comment faire ?

    Merci d'avance pour votre aide.

  2. #2
    Membre extrêmement actif Avatar de ddoumeche
    Homme Profil pro
    Ingénieur recherche et développement
    Inscrit en
    Octobre 2007
    Messages
    1 687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Singapour

    Informations professionnelles :
    Activité : Ingénieur recherche et développement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 687
    Points : 2 013
    Points
    2 013
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE DEFINER=`companyERP`@`%` TRIGGER `trigger` 
    AFTER INSERT ON `Table_1` FOR EACH ROW BEGIN
     
    INSERT INTO Table_2 
    SELECT * FROM Table_1
    WHERE Table_1.Id = NEW.id;
    END
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE DEFINER=`companyERP`@`%` TRIGGER `trigger` 
    AFTER UPDATE ON `Table_1` FOR EACH ROW BEGIN
     
    UPDATE Table_2
    SET <field_1> = NEW.<field_1>
    ,<field_2> = NEW.<field_2>
    WHERE Table_2.Id = NEW.id;
    END

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2015
    Messages : 16
    Points : 18
    Points
    18
    Par défaut
    Bonjour et merci ddoumeche,

    J'ai finalement utilise le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE DEFINER=`glasseserp`@`%` TRIGGER `TEST_COUNTRY_after_insert` AFTER INSERT ON `TEST_COUNTRY` FOR EACH ROW
    BEGIN
    INSERT INTO TEST_ODS_COUNTRY (idTEST_COUNTRY, name, currency, continent)
    VALUES (NEW.`idTEST_COUNTRY`, NEW.`name`, NEW.`currency`, NEW.`continent`);
    END
    Bonne journee,

  4. #4
    Membre extrêmement actif Avatar de ddoumeche
    Homme Profil pro
    Ingénieur recherche et développement
    Inscrit en
    Octobre 2007
    Messages
    1 687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Singapour

    Informations professionnelles :
    Activité : Ingénieur recherche et développement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 687
    Points : 2 013
    Points
    2 013
    Par défaut
    bonjour,

    personnellement, je n'aime pas trop ces ` pour les noms de champs, je préferre encore les [] à la SQL serveur.

    Heureux de savoir que cela corrige ton problème.

    N'oublies pas de marquer ce fils comme résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/03/2009, 10h22
  2. Réponses: 17
    Dernier message: 21/04/2008, 01h21
  3. Réponses: 4
    Dernier message: 13/11/2007, 22h23
  4. Réponses: 18
    Dernier message: 11/04/2007, 15h18
  5. copier une ligne dans une autre table
    Par BoeufBrocoli dans le forum SQL
    Réponses: 5
    Dernier message: 24/10/2003, 22h59

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