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 sur deux tables


Sujet :

Développement SQL Server

  1. #1
    Membre régulier
    Inscrit en
    Avril 2003
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 84
    Points : 70
    Points
    70
    Par défaut [RESOLU] trigger sur deux tables
    Bonjour,
    question sur les triggers.
    imaginez :
    première base de donnée avec deux tables (Ouvrier Patron)
    deuxième base de données avec deux tables (Employe Employeur)
    Les tables de chaque base de données ne sont pas tout à fait les mêmes mais ont des pts communs.
    J'aimerais que lorsqu'on insère un élément dans Employe, cet élément soit aussi inséré dans Ouvrier(les colonnes qui ne sont pas en communs seront vides). Puis ensuite quand on modifie l'élément, les deux tables soient modifiées.
    Est-ce possible de faire cela avec des triggers ? ....en espérant que vous avez compris ma question
    merci.

  2. #2
    Membre à l'essai
    Inscrit en
    Octobre 2002
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 9
    Points : 12
    Points
    12
    Par défaut
    Salut,
    Tu peux utiliser les triggers pour les actions d'insertion, de mise à jour et d'effacement...Et cela sert surtout dans ton cas, même si les serveurs ne sont pas les mêmes.... Pour les triggers, il faut préciser au début:
    if UPDATE...
    if DELETE....
    If CREATE...
    Suivant ce que tu veux faire.
    Si tu utilises une version supérieure à la version 7 de SQL serveur, des prototypes sont proposés sous l'analyseur de requêtes...

    Lionel

  3. #3
    Membre régulier
    Inscrit en
    Avril 2003
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 84
    Points : 70
    Points
    70
    Par défaut
    effectivement je viens d'essayer, ça a l'air de marcher.
    Néanmoins j'ai un soucis :
    une table Table1 avec (EMPLOYE,EMPLOYEUR)
    une table Table2 avec (NOM,PRENOM)
    voila le code d'une procédure stockée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    CREATE PROCEDURE [insert_Table1_1]
    	(@EMPLOYE_1 	[char](10),
    	 @EMPLOYEUR_2 	[char](10))
     
    AS INSERT INTO [dbo].[Table1] 
    	 ( [EMPLOYE],
    	 [EMPLOYEUR]) 
     
    VALUES 
    	( @EMPLOYE_1,
    	 @EMPLOYEUR_2)
    GO
    et le code de mon trigger sur l'insertion dans Table2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE TRIGGER trigger_insert_t2 ON [dbo].[Table2] 
    FOR INSERT 
    AS
    EXECUTE insert_Table1_1 inserted.nom,inserted.prenom
    Mais ça ne marche pas!
    quand je remplace "inserted.nom, inserted.prenom" par " 'bob','alphonse' " ça marche..... quelle syntaxe utiliser pour accèder aux champs insérés ?
    merci de m'aider
    ps : j'utilise MS SERVER Entreprise Manager

  4. #4
    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
    Par défaut
    Slt,

    Les tables logiques inserted et deleted sont des TABLES donc il faut faire un select pour recuperer la ou les lignes qu'elles contiennent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT nom, prenom from inserted
    a+
    One ring to rule them all,
    One ring to find them,
    One ring to bring them all
    And in the darkness bind them.

  5. #5
    Membre régulier
    Inscrit en
    Avril 2003
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 84
    Points : 70
    Points
    70
    Par défaut
    effectivement ça marche comme ça !
    merci.

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

Discussions similaires

  1. [MySQL-5.5] Trigger sur deux tables
    Par tafistar dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 18/07/2013, 21h52
  2. Trigger sur deux tables
    Par alitazichibi dans le forum SQL Procédural
    Réponses: 23
    Dernier message: 07/01/2013, 23h22
  3. Cumul sur deux tables
    Par lper dans le forum Langage SQL
    Réponses: 6
    Dernier message: 30/11/2004, 15h02
  4. Comptez sur deux tables en même temps
    Par genova dans le forum Langage SQL
    Réponses: 12
    Dernier message: 13/09/2004, 18h58
  5. 2 Count() sur deux tables en jointures gauches
    Par Alexandre T dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/09/2003, 16h53

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