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 :

Pourquoi ce trigger ne marche pas ??


Sujet :

Développement SQL Server

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 24
    Points : 13
    Points
    13
    Par défaut Pourquoi ce trigger ne marche pas ??
    Bonjour

    le fais un trigger sur la table article, qui contiens le champ LIB
    or a cette ligne il me dit que le LIB n est pas un nom de colonne

    SET @LIBELLE = LIB

    dans le trigger, ne puis je pas recuperer les valeur des champs ????

    autre chose, je voudrais que ce trigger s execute que si le champ LIB est modifie, comment faire ???

    merci

    SET QUOTED_IDENTIFIER OFF
    GO
    SET ANSI_NULLS ON
    GO

    ALTER TRIGGER [EXPORT_TXT] ON [dbo].[Article]
    AFTER UPDATE
    AS

    declare @LIBELLE nvarchar;
    declare @cmd nvarchar;

    SET @LIBELLE = LIB
    SET @cmd = @LIBELLE + ' > E:\\BASES SQL\\PCM_TEST\\TOTO.txt'

    exec master..xp_cmdshell @cmd

    GO
    SET QUOTED_IDENTIFIER OFF
    GO
    SET ANSI_NULLS ON
    GO

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 285
    Points : 139
    Points
    139
    Par défaut
    Hello !

    Pour que le code du Trigger ne s'execute que sur une colonne que tu veux, tu peux utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ALTER TRIGGER [EXPORT_TXT] ON [dbo].[Article] 
    AFTER UPDATE 
    AS 
     
        IF UPDATE(LIB)
           BEGIN
                [...]
           END
    [...]
    Ensuite, je ne suis pas sur que tu puisses récupérer la valeur comme cela. Je sais que tu peux avoir accès à une table "inserted" qui elle contient les lignes qui ont été ajoutées/modifiées ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT @LIBELLE=LIB FROM inserted
    Le problème de cette méthode est que tu dois être sur qu'il n y a pas plusieurs lignes dans inserted ...

  3. #3
    Membre averti
    Inscrit en
    Août 2002
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 354
    Points : 398
    Points
    398

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Merci

    pour creer le trigger j y arrives mais c est apres que ca va pas

    CREATE TRIGGER [EXPORT_TXT] ON [dbo].[INTERVENTIONS]

    AFTER UPDATE
    AS

    declare @LIBELLE nvarchar;
    declare @cmd nvarchar;

    SET @LIBELLE = ' dede'
    SET @cmd = 'echo ' + @LIBELLE + ' > E:\\BASES SQL\\PCM_TEST\\TOTO.txt'

    1 - je ne sais pas s il s execute
    2 - s il s execute je ne trouve nulle part trace du fichier texte qu il est censé creer

    merci de votre aide

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Ca y est j ai trouvé
    en fait il fallait declarer les variables en sysname et non en varchar

    CREATE TRIGGER [EXPORT_TXT] ON [dbo].[ARTICLE]
    AFTER UPDATE
    AS

    DECLARE @cmd sysname,
    @LIBELLE sysname

    IF UPDATE (LIB)

    begin
    Select @LIBELLE= LIB FROM INSERTED WHERE NATURE =0
    SET @cmd = 'echo ' + @LIBELLE + ' >> C:\WORK\TOTO.txt'

    exec master..xp_cmdshell @cmd
    end

    Merci

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

Discussions similaires

  1. Pourquoi mon trigger ne marche pas ?
    Par Djobird dans le forum Langage SQL
    Réponses: 3
    Dernier message: 22/04/2011, 02h46
  2. je ne sais pas pourquoi ce code ca marche pas
    Par debutantasp dans le forum ASP
    Réponses: 14
    Dernier message: 23/11/2007, 17h10
  3. Pourquoi mon Thread ne marche pas ?
    Par Cazaux-Moutou-Philippe dans le forum Delphi
    Réponses: 9
    Dernier message: 27/05/2007, 16h19
  4. pourquoi ma fonction ne marche pas?
    Par isma92 dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 30/01/2007, 14h22
  5. Pourquoi mon script ne marche pas?
    Par amarcil dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/05/2006, 21h37

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