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 :

Trigger Cascade delete


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Pymento
    Homme Profil pro
    Ingé. Info.
    Inscrit en
    Janvier 2008
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingé. Info.

    Informations forums :
    Inscription : Janvier 2008
    Messages : 366
    Par défaut Trigger Cascade delete
    Bonjour, je débute dans les triggers, je vous explique succinctement mon objectif: emuler un "cascade on delete" étant donné que j'ai du utiliser une table MyIsam.

    Donc j'ai deux table une innoDB l'autre Isam, je veut simplement quand je supprime une ligne sur table1 supprimer la ligne correspondante par l'id dans table2.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DELIMITER $$
    CREATE TRIGGER before_delete_element
    BEFORE DELETE ON elements
    DELETE FROM file_info WHERE  table1.id=table2.id
    DELIMITER ;
    J'execute ça dans phpMyADmin dans la section SQL, et il me dit OK c'est bon tout va bien, par contre forcément, rien ne marche(SHOW TRIGGERS ne me renvoi rien). Et impossible d'y mettre la main dessus, je ne sais pas ou ça va. Si quelqu'un pourrai en premier temps me corriger ma requête et m'expliquer comment "gérer" les triggers dans mysql.

    Merci d'avance.

  2. #2
    Membre éclairé Avatar de Pymento
    Homme Profil pro
    Ingé. Info.
    Inscrit en
    Janvier 2008
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingé. Info.

    Informations forums :
    Inscription : Janvier 2008
    Messages : 366
    Par défaut
    Bon j'ai semble-t-il trouvé la bonne requête,
    *


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    delimiter $$
    CREATE TRIGGER delete_cascade_element
    AFTER delete ON elements
    FOR EACH ROW
    BEGIN
    DELETE FROM file_info WHERE file_id=Old.id
    END$$
    delimiter ;
    Mais j'ai un soucis de syntaxe près de END ligne 6 d'après phpMyAdmin.
    J'ai essayé tout ce que j'ai trouvé comme délimiter sur le net mais toujours la même erreur.

  3. #3
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    il manque le ; à la fin de la ligne

  4. #4
    Membre éclairé Avatar de Pymento
    Homme Profil pro
    Ingé. Info.
    Inscrit en
    Janvier 2008
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingé. Info.

    Informations forums :
    Inscription : Janvier 2008
    Messages : 366
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    delimiter $$
    CREATE TRIGGER delete_cascade_element
    AFTER DELETE ON elements
    FOR EACH ROW
    BEGIN
    DELETE FROM file_info WHERE file_id=Old.id
    END$$;
    delimiter ;
    j'avais essayé de mettre ";" avant $$ mais pas comme ça effectivement, "ça passe" pas d'erreur en revanche impossible avec un
    de voir le bout de son nez !

  5. #5
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    pense que ce que tu mets dans un trigger, une procédure ou une fonction stockée c'est du code sql donc on finit proprement la ligne avec un ;

    d'où l'utilisation de delimiter pour changer la fin de ligne pour le create et bien avoir le ; dans le corps de celui-ci

    tu dois préciser la base visée, la commande c'est:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    show triggers from nom_base;

  6. #6
    Membre éclairé Avatar de Pymento
    Homme Profil pro
    Ingé. Info.
    Inscrit en
    Janvier 2008
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingé. Info.

    Informations forums :
    Inscription : Janvier 2008
    Messages : 366
    Par défaut
    Citation Envoyé par ericd69 Voir le message
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    show triggers from nom_base;
    Toujours le même résultat -> Rien

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

Discussions similaires

  1. Trigger after delete
    Par festayre47 dans le forum PL/SQL
    Réponses: 8
    Dernier message: 27/12/2007, 12h02
  2. [SQL2005]Trigger On delete, insert, update(colonne)
    Par slim dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 27/02/2007, 16h36
  3. [ EJB ] [JBoss ] [ XDoclet ] probleme avec cascade-delete
    Par Houbbba dans le forum Wildfly/JBoss
    Réponses: 4
    Dernier message: 03/05/2006, 10h05
  4. [Trigger] Trigger cascade table hiérarchique
    Par CUCARACHA dans le forum Développement
    Réponses: 1
    Dernier message: 12/02/2006, 18h24
  5. [EJB2.1 Entity] [XDOCLET]Cascade delete
    Par SEMPERE Benjamin dans le forum Java EE
    Réponses: 3
    Dernier message: 23/02/2005, 09h29

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