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 :

Problème de trigger d'update


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2014
    Messages : 1
    Par défaut Problème de trigger d'update
    Bonjour à tous,

    Je debute en programmation de trigger.
    J'ai fait un trigger Update et celui-ci ne fonctionne pas.
    J'ai testé ma requète de mise à jour en SQL et elle fonctionne.
    Voici le code de mon 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    USE [BIJOU]
     GO
     /****** Object: Trigger [dbo].[CSP] Script Date: 10/31/2014 08:57:16 ******/
     SET ANSI_NULLS ON
     GO
     SET QUOTED_IDENTIFIER ON
     GO
    -- =============================================
    -- Author: <Author,,Name>
    -- Create date: <Create Date,,>
    -- Description: <Description,,>
    -- =============================================
    ALTER TRIGGER [dbo].[CSP]
     ON [dbo].[F_DOCLIGNE] 
     AFTER INSERT,UPDATE
     
     AS 
     Declare @H_CSP Int
     Declare @H_Reste Int
     Declare @H_Date Date
     Declare @Date Datetime
     Select
     @Date= Getdate ();
     
     Select
     @H_Date = CbModification
     
     From F_DOCLIGNE
     
     Select 
     @H_CSP = [Compteur d'Heures CSP]
     
     FROM F_COMPTET 
     
     Select
     @H_Reste = Reste
     FROM dbo.CSP3 
     
     SET NOCOUNT ON;
     IF @H_Date = @Date
     BEGIN
     UPDATE F_COMPTET 
     SET [Compteur d'Heures CSP] = CSP3.Reste
     FROM F_COMPTET LEFT OUTER JOIN dbo.CSP3 ON F_COMPTET.CT_Num = CSP3.CT_Num
     
     END
    Je teste l'insertion et l'update sur la date des lignes de documents et on fonctionne de cela, je mets à jour un champ de la fiche client d'après une vue.

    Merci de votre aide.

    Cordialement

  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
    21 999
    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 : 21 999
    Billets dans le blog
    6
    Par défaut
    Les déclencheurs SQL Server sont ensemblistes. pas de lignes à ligne. Les variables dans un trigger ne peuvent donc pas servir. Vous ne devez par conséquent qu'écrire une requête ensembliste en tenant comte des valeurs en cours de modif indiquées dans les pseudo tables inserted et deleted.

    la plupart de vos variables dans ce trigger ne servent d'ailleurs à rien. Relisez vous :

    Voici a peu près ce que vous devriez avir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ALTER TRIGGER [dbo].[CSP]
     ON [dbo].[F_DOCLIGNE] 
     AFTER INSERT,UPDATE
     
    UPDATE T
    SET    [Compteur d'Heures CSP] = C.Reste
    FROM   F_COMPTET  AS T
           OUTER JOIN dbo.CSP3 AS C
                 ON T.CT_Num = C.CT_Num
    WHERE  T.CbModification IN (SELECT CbModification FROM inserted)
    Bref, formez-vous !!!

    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
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Un petit billet que j'avais écrit sur le sujet.
    Bonne lecture !

    @++

Discussions similaires

  1. Problème de trigger Update
    Par ahmedtabarka dans le forum PL/SQL
    Réponses: 2
    Dernier message: 21/05/2012, 09h55
  2. Problème exécution trigger after update
    Par Fabien85 dans le forum Développement
    Réponses: 19
    Dernier message: 15/01/2009, 17h35
  3. Problème lors d'un trigger sur update
    Par yonialhadeff dans le forum Développement
    Réponses: 1
    Dernier message: 09/10/2007, 08h44
  4. Problème lors d'un Update sur une date
    Par Nany dans le forum ASP
    Réponses: 3
    Dernier message: 19/05/2004, 22h37

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