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 :

Trigger - Problème Récupération valeur


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 111
    Points : 59
    Points
    59
    Par défaut Trigger - Problème Récupération valeur
    Bonjour,
    J'effectue un trigger sur une table pour qu'il me remplisse une autre table mais, j'ai des souci pour récupérer les valeurs de l'insertion :

    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
     
     
    REATE TRIGGER INS_SIA_ENTE ON dbo.TCOM_CDEE 
    FOR INSERT
    AS
       DECLARE @NomEchange nvarchar(25)
       DECLARE @TypeEchange char(1)
       DECLARE @test nvarchar(12)
     
       -- On regarde si la données est à destination de la base SAGE
       SELECT @NomEchange = T_ECHANGES.DESTINATION FROM T_ECHANGES WHERE T_ECHANGES.ID_E = (SELECT ID_E FROM INSERTED)
       IF (@NomEchange = 'SAGE' )
       BEGIN
       SELECT @TypeEchange=ACTION_E FROM INSERTED
       IF (@TypeEchange = 'A') 
       BEGIN
          -- Ajout d'une valeur
          SELECT @test= NO_COMMANDE FROM INSERTED
          INSERT INTO [F_DOCENTETE] (DO_Domaine, DO_Type, DO_Piece, DO_Date, DO_Tiers, RE_No, CA_Num)  VALUES ( 0, 1, @test, '26/03/2007', INSERTED.NO_COMMANDE, 42, '7010232')
       END
    END
    La méthode avec @test fonctionne mais pas utilisable etant donnée que j'ai plein de champs a recopier.
    Par contre ma 2e méthode INSERTED.NO_COMMANDE ne fonctionne pas... et ce serais plus facile a mettre ne place...

    Merci de votre aide pour me dire pourquoi cela ne fonctionne pas... Mauvaise syntaxe ???

  2. #2
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 75
    Points : 84
    Points
    84
    Par défaut
    Je ne sais pas si j'ai tout suivi mais est ce que ta solution ne devrai pas être dans ce style?.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE TRIGGER INS_SIA_ENTE ON dbo.TCOM_CDEE 
    FOR INSERT
    AS
     
    IF ((SELECT COUNT(*) FROM T_ECHANGES 
    INNER JOIN INSERTED ON T_ECHANGES.ID_E = INSERTED.ID_E
    WHERE T_ECHANGES.DESTINATION = 'SAGE' ) >0)
     
    BEGIN
     
    INSERT INTO [F_DOCENTETE] 
    (SELECT 0,1,NO_COMMANDE,getdate(),42,'7010232' FROM INSERTED WHERE ACTION_E='A')
    END

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 111
    Points : 59
    Points
    59
    Par défaut
    Lu,
    Merci pour ta réponse, mais j'ai pas tout compris,

    en fet, je cherche juste a faire un INSERT dans une table F_DOCENTETE d'une donnée que je suis en train d'insérer dans ma table TCOM_CDEE

    Alors je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO F_DOCENTETE (DO_Piece) VALUES (?????)
    Dans mes ???? j'aimerais mettre la valeur d'uns colonne de TCOM_CDEE... de facon simple sans passé par une variable intermédiaire....

    J'avais fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERTED.NO_COMMANDE
    Mais cela ne marche pas !!!

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 75
    Points : 84
    Points
    84
    Par défaut
    ?????

    Si il y a juste NO_COMMANDE et que les autres champs ne sont pas présents dans INSERTED tu peux faire ainsi en donnant le même nombre de champs en résultat dans ton SELECT que dans F_DOCENTETE


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO [F_DOCENTETE] 
    (SELECT NO_COMMANDE ,'xxx','xxx','xxx' FROM INSERTED WHERE ACTION_E='A')

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 111
    Points : 59
    Points
    59
    Par défaut
    Salut,
    Heu, est on met pas de values ???
    Si je veux mettre la liste des champs car ma table est immense et je ve pas remplir tout les champs, on fait comment pour la syntaxe ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO [F_DOCENTETE] (DO_Domaine, DO_Type, DO_Piece, DO_Date, DO_Tiers, RE_No, CA_Num)  VALUES ( (SELECT 0, 1, NO_COMMANDE, getdate() FROM INSERTED))
    J'ai essayé ca, mais il me dis que je pe pas faire de sous-requete ...

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 75
    Points : 84
    Points
    84
    Par défaut
    As tu jeté un oeil sur le site de SqlPro? Sinon la plus grande partie des réponses à tes questions sont là.

    http://sql.developpez.com/sqlaz/dml/#L1.5

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 111
    Points : 59
    Points
    59
    Par défaut
    OK, merci beaucoup pour le lien tutoriel cela fonctionne pour info

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO [F_DOCENTETE] (DO_Domaine, DO_Type, DO_Piece, DO_Date)  SELECT 0, 1, NO_COMMANDE, getdate() FROM INSERTED
    Merci, et désolée, j'aurais du le trouvé mais, j'ai un peux de mal avec les rechercher sur ce site....
    Je suis passé par google et j'ai rien trouvé a ce sujet sur celui-ci...

    Mais, merci beaucoup !!!
    A bientot

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

Discussions similaires

  1. [RegEx] Problème récupération valeur
    Par soulflow dans le forum Langage
    Réponses: 7
    Dernier message: 22/08/2011, 12h05
  2. Problème récupération valeur liste déroulante
    Par bond70 dans le forum Langage
    Réponses: 8
    Dernier message: 28/04/2010, 11h01
  3. [MySQL] Re problème récupération valeur liste dynamique
    Par stefsas dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/03/2010, 08h58
  4. Problème récupération valeur liste déroulante
    Par philouelgeek dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 26/01/2010, 08h22
  5. problème récupération valeur d'un "div"
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 29/06/2005, 10h04

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