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 :

ERP et Trigger


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Avatar
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juillet 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 137
    Par défaut ERP et Trigger
    Bonjour,

    J'ai créé le trigger suivant sur une table de de notre ERP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE TRIGGER TEST
    ON [TEST].[TABLE1]
    AFTER INSERT AS
    BEGIN
     
    UPDATE [TEST].[TABLE1]
       SET TEMP_0 = i.DES1_0
      from inserted i
      where [TABLE1].CLE = i.CLE
     
    END
    L'insertion des données se fait depuis l'ERP et je n'ai pas la possibilité d'insérer des données dans la table depuis une requête SQL pour les tests.

    Lorsqu'une ligne est insérée dans la table depuis l'ERP, il ne se passe rien... en fait aucune nouvelle ligne n'est créée dans la table. Si le trigger est supprimé, tout fonctionne.

    Il existe déjà un trigger uptade généré par l'ERP sur cette table qui va mettre un jour un compteur.

    La syntaxe de mon update semble correcte, la jointure également.

    L'erreur vient-elle de mon code? Si non, comment débugger ou avoir accès à des logs?

    Merci par avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE [TEST].[TABLE1]
       SET TEMP_0 = i.DES1_0
      from inserted i
      where [TABLE1].CLE = i.CLE
    Syntaxe incorrecte.
    Par exemple, voir : https://www.mssqltips.com/sqlservert...with-triggers/
    Dernière modification par Invité ; 23/07/2018 à 21h03.

  3. #3
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Ajoute aussi un SET NOCOUNT ON; au début du trigger.

    Souvent les ERP (et autres logiciels) comparent le "updated rows" au nombre de lignes supposées être traitées par la requête, et ça peut provoquer un rollback ou autre comportement incohérent.

  4. #4
    Membre confirmé Avatar de Avatar
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juillet 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 137
    Par défaut
    bonjour,

    cela a fonctionné avec cette syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    ALTER TRIGGER TEST
    ON MABASE
    AFTER INSERT AS
    BEGIN
    set nocount on
     
    	UPDATE MABASE
    	   SET MONCHAMP = i.MONCHAMP
    	from inserted as i
    	inner join MABASE ON MABASE.CLE1 = i.CLE1 and MABASE.CLE2 = i.CLE2
     
    set nocount off
    END
    merci

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

Discussions similaires

  1. [power designer et Sybase] trigger
    Par mr_qno dans le forum Sybase
    Réponses: 4
    Dernier message: 12/07/2006, 19h32
  2. [Interbase6] Trigger : Post_event
    Par Andry dans le forum InterBase
    Réponses: 2
    Dernier message: 13/05/2003, 10h27
  3. Trigger ??
    Par XDeus dans le forum Développement
    Réponses: 6
    Dernier message: 31/03/2003, 10h44
  4. [PostgreSQL] Refus de STATEMENT dans un trigger
    Par alex2205 dans le forum Requêtes
    Réponses: 3
    Dernier message: 10/03/2003, 13h51
  5. [Comparatif] Procédures stockées, triggers, etc.
    Par MCZz dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 28/08/2002, 13h27

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