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

Développement SQL Server Discussion :

probleme trigger update apres un delete


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 63
    Par défaut probleme trigger update apres un delete
    J'ai un probleme sous MS SQL SERVER avec un Trigger, dans le sens où je crois comprendre l'erreur mais je ne vois pas comment contourner le probleme, je m'explique :

    J'ai une table principale ARTICLE_REFERENCES qui renseigné par 6 autres tables (la clé étrangère vers ARTICLE_REFERENCES est reference_id) et Le premier inséré position = 1, le 2eme position = 2, etc..

    Je voudrais que lorsque je delete un tuple, toutes les positions des autres tuples dont la position est plus grande que celle que je delete soit décrémentée de un.

    Par exemple, avec la liste : 1 , 2 , 3 , 4 , 5 ; Je supprime le 3, sans aucune modification de la liste est 1 , 2 , 4 , 5 ; Le but du trigger est de mettre à jour le 4 , 5 en les modifiant en 3 , 4.

    J'espère avoir été clair

    Donc voici mon trigger, qui est valide, donc bien entré dans le serveur MS SQL SERVER :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE  TRIGGER UpID_reference AFTER DELETE ON ARTICLE_REFERENCES
    FOR EACH ROW
    UPDATE ARTICLE_REFERENCES SET reference_id=reference_id where reference_id>OLD.reference_id;
    je vous remercie bcp

  2. #2
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Par défaut
    CREATE TRIGGER UpID_reference AFTER DELETE ON ARTICLE_REFERENCES
    FOR EACH ROW
    UPDATE ARTICLE_REFERENCES SET reference_id=reference_id WHERE reference_id>OLD.reference_id;
    il te manque la décrémentation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE  TRIGGER UpID_reference AFTER DELETE ON ARTICLE_REFERENCES
    FOR EACH ROW
    UPDATE ARTICLE_REFERENCES SET reference_id=reference_id-1 WHERE reference_id>OLD.reference_id;

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 63
    Par défaut
    merci pour la réponse, je l'ai faite (la décrémentation) c'était une omission comme j'ai fait copier/coller.

  4. #4
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Par défaut
    ou est le pb alors ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 63
    Par défaut
    je pense que l'erreur vient du fait que "reference_id" est une clé primaire de la table principale donc elle n'accepte pas un update !
    pour info reference_id est un : INTEGER IDENTITY (1,1)

  6. #6
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Par défaut
    essaies de mettre un set identity off avant ton update puis tu remets un set identity on après

    le fait que ce soit une clé primaire n'a pas d'effet car dans ton cas
    tu supprime 3
    tu passes le 4 en 3
    le 5 en 4
    ...
    donc tu as toujours unicité

    regarde plutot si c'est pas un FK (foreign key)

  7. #7
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Citation Envoyé par agur29 Voir le message
    Donc voici mon trigger, qui est valide, donc bien entré dans le serveur MS SQL SERVER :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE  TRIGGER UpID_reference AFTER DELETE ON ARTICLE_REFERENCES
    FOR EACH ROW
    UPDATE ARTICLE_REFERENCES SET reference_id=reference_id where reference_id>OLD.reference_id;
    je vous remercie bcp
    Bonjour,

    Es-tu vraiment vraiment sûr que ton trigger est valide dans SQL Server ? Cette syntaxe correspond à de l'Oracle ou du PostgreSQL, sauf erreur.

Discussions similaires

  1. Trigger : update apres un insert
    Par xav_carene dans le forum SQL
    Réponses: 4
    Dernier message: 18/08/2010, 17h48
  2. probleme de updated en trigger
    Par DJERDJAR YACINE dans le forum Développement
    Réponses: 2
    Dernier message: 31/07/2007, 17h44
  3. [ASP.NET-ACCESS] probleme d'update apres insertion
    Par come18 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 14/05/2007, 12h59
  4. Problème trigger BEFORE UPDATE
    Par berceker united dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 30/08/2006, 16h55
  5. Réponses: 13
    Dernier message: 20/03/2006, 16h26

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