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

MS SQL Server Discussion :

Problème avec un Trigger


Sujet :

MS 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 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 19
    Par défaut Problème avec un Trigger
    Bonjour,

    Lorsque je test mon trigger dans mon application, j'obtiens le message d'erreur dans visual studio :
    "
    public void SubmitChanges(){
    _dcWindix.SubmitChanges();
    }
    L'exception ChangeConflictException n'a pas été gérée par le code utilisateur
    Ligne introuvable ou modifiée"

    Alors que mon Trigger fonctionne très bien dans la base de données et il effectue bien les opérations demandées.

    J'ai essayé de rajouter un begin et commit transaction mais j'ai alors l'erreur "sqlexception".

    Voici le code du Trigger :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    -- Trigger table campagne
    CREATE TRIGGER [dbo].[maj_com_campagne]
    ON [dbo].[CAMPAGNE]
    AFTER INSERT,UPDATE
    AS
    IF UPDATE(ID_PFP)
     
    --DECLARE @message VARCHAR(255)
    --SELECT @message = (SELECT MESSAGE_ALERTE FROM PFP, INSERTED WHERE PFP.ID = INSERTED.ID_PFP)
    UPDATE CAMPAGNE
    SET CAMPAGNE.COMMENTAIRE = 'test'
    FROM CAMPAGNE, INSERTED
    WHERE CAMPAGNE.ID = INSERTED.ID
    GO
    Merci d'avance.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Le ce de votre UPDATE est faux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    WHERE PFP.ID = INSERTED.ID_PFP)
    UPDATE CAMPAGNE
    SET CAMPAGNE.COMMENTAIRE = 'test'
    FROM CAMPAGNE, INSERTED
    WHERE CAMPAGNE.ID = INSERTED.ID
    GO
    Ce qui est en rouge est illégal, car ous ne devez pas préciser la cible elle est implicitement fixée par la clause UPDATE.

    De plus les jointures se font dans le JOIN et non dans le WHERE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE T
    SET    COMMENTAIRE = 'test'
    FROM   CAMPAGNE AS T
           INNER JOIN INSERTED AS I
                 ON T.ID = I.ID;
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 19
    Par défaut
    Merci pour ces informations toutefois le problème n'est pas résolu, voici le message d'erreur détaillé accompagné de quelques précisions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    Erreur du serveur dans l'application '/'.
    Ligne introuvable ou modifiée.
    Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.
     
    Détails de l'exception: System.Data.Linq.ChangeConflictException: Ligne introuvable ou modifiée.
     
    Erreur source:
     
    Ligne 20 : 		// http://stackoverflow.com/questions/226127/multiple-single-instance-of-linq-to-sql-datacontext
    Ligne 21 : 		public void SubmitChanges(){
    Ligne 22 : 			_dcWindix.SubmitChanges();
    Ligne 23 : 		}
    Ligne 24 : 	}
     
     
    Fichier source : E:\Projets\Windix\Dal\SuperDao.cs    Ligne : 22
     
    Trace de la pile:
     
    [ChangeConflictException: Ligne introuvable ou modifiée.]
       System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode) +962925
       System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode) +331
       System.Data.Linq.DataContext.SubmitChanges() +19
       Dao.SuperDao.SubmitChanges() in E:\Projets\Windix\Dal\SuperDao.cs:22
       Service.CampagneSrv.Ajouter(CAMPAGNE campagne) in E:\Projets\Windix\Service\CampagneSrv.cs:40
       IHM.Protected.Conditionnement.AjouterCampagne.btnAjouterCampagne_Click(Object sender, EventArgs e) in E:\Projets\Windix\IHM\Protected\Conditionnement\AjouterCampagne.aspx.cs:111
       System.Web.UI.WebControls.LinkButton.OnClick(EventArgs e) +111
       System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +79
       System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
       System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +175
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
     
     
    Informations sur la version : Version Microsoft .NET Framework :2.0.50727.5448; Version ASP.NET :2.0.50727.5456
    Précisions :
    La base de données sur lequel est placé ce Trigger est utilisé dans un projet asp.net, utilisant linQToSql.

    Merci d'avance.

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    LINK TO SQL n'est plus officiellement approuvé et son code ne sera vraisemblablement plus maintenu au delà du framework 4. Vous devez vous débarrasser de LinkToSQL pour continuer votre ouvrage.

    A lire (entre les lignes) :
    http://msdn.microsoft.com/en-us/data/bb525059.aspx#Q3

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 19
    Par défaut
    J'ai bien lu l'article cependant il faut que je fasse avec le linqToSql, de plus, j'ai un autre Trigger avec lequel je n'ai aucun soucis.
    Je ne comprends pas pourquoi j'ai une erreur spécialement sur ce Trigger.

  6. #6
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    Problème courant avec LINQ TO SQL et les trigger...

    Pouvez vous nous indiquer le détail de votre entité dans LINQ TO SQL...

    Comporte t'il une clé primaire de type auto increment?

Discussions similaires

  1. Problème avec un trigger
    Par fayerne dans le forum PL/SQL
    Réponses: 2
    Dernier message: 13/01/2008, 00h36
  2. Réponses: 4
    Dernier message: 27/11/2007, 15h32
  3. probléme avec un trigger
    Par sofiane1111 dans le forum Oracle
    Réponses: 4
    Dernier message: 14/06/2007, 11h17
  4. Problème avec un trigger...
    Par nasgektw dans le forum Développement
    Réponses: 3
    Dernier message: 28/04/2006, 17h41
  5. [T-SQL] problème avec un trigger
    Par karine77 dans le forum Adaptive Server Enterprise
    Réponses: 3
    Dernier message: 26/09/2005, 10h45

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