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

InterBase Discussion :

[Interbase] [Triggers] jointure externe


Sujet :

InterBase

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2003
    Messages : 38
    Points : 18
    Points
    18
    Par défaut [Interbase] [Triggers] jointure externe
    Bonjour!

    Quand une table comporte 2 clés primaires, il faut coder 2 triggers?

  2. #2
    Membre actif
    Avatar de MashiMaro
    Profil pro
    Inscrit en
    Février 2003
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 180
    Points : 213
    Points
    213
    Par défaut Re: [Interbase] [Triggers] jointure externe
    Citation Envoyé par anesthezie
    Bonjour!

    Quand une table comporte 2 clés primaires, il faut coder 2 triggers?
    Salut,

    Un trigger n'a aucun rapport avec le nombre de clés. Il se déclenche par rapport à un action faite sur la table (INSERT, DELETE, UPDATE) pour pouvoir automatiquement répercuter des informations sur d'autres tables (par exemple).

    NB : je ne comprends pas le sens d'avoir deux clés primaires sur une table.
    MashiMaro

    L'homme sage apprend de ses erreurs, l'homme très sage apprend des erreurs des autres.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2003
    Messages : 38
    Points : 18
    Points
    18
    Par défaut
    J'ai une table qui fait la liaison entre une tables "OUTILSINVENTORIES" et une table "FOURNISSEURS". c'est une relations plusieurs à plusieurs.

    Donc j'obtient cette table pour la liaison :



    Alors comment faire au niveau des triggers pour cette table?

  4. #4
    Membre actif
    Avatar de MashiMaro
    Profil pro
    Inscrit en
    Février 2003
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 180
    Points : 213
    Points
    213
    Par défaut
    La question n'est pas "comment faire ?" mais "qu'est ce que mon trigger doit faire ?"

    Est ce que le trigger est sur la table OUI_Fournir ou est ce qu'il doit mettre à jour ta table ?

    Sinon, pour info, tu n'as qu'une seule clé primaire sur ta table qui est le couple (OUI,FOU) qui sont tes deux clés étrangères.
    MashiMaro

    L'homme sage apprend de ses erreurs, l'homme très sage apprend des erreurs des autres.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2003
    Messages : 38
    Points : 18
    Points
    18
    Par défaut
    Je ne sais pas ce que mon trigger doit faire. En fait, j'ai un trigger pour ma table "OUTILSINVENTORIES" et un pour ma table "FOURNISSEURS". Et je n'ai pas de trigger pour ma table "OUI_Fournir".

    Voici le code de mon trigger de la table "OUTILSINVENTORIES" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TRIGGER "TRI_INSERT_OUTILSINVENTORIES" FOR "OUTILSINVENTORIES"
    ACTIVE BEFORE INSERT POSITION 0
    AS
    BEGIN
      IF (new.OUI_NUM IS NULL) THEN
      new.OUI_NUM = GEN_ID(GEN_OUTILSINVENTORIES,1);
    END
     ^
    Voici le code de mon trigger de la table "FOURNISSEURS" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TRIGGER "TRI_INSERT_FOURNISSEURS" FOR "FOURNISSEURS"
    ACTIVE BEFORE INSERT POSITION 0
    AS
    BEGIN
      IF (new.FOU_NUM IS NULL) THEN
      new.FOU_NUM = GEN_ID(GEN_FOURNISSEURS,1);
    END
     ^

  6. #6
    Membre habitué

    Profil pro
    Inscrit en
    Février 2003
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 28
    Points : 139
    Points
    139
    Par défaut
    Merci de faire attention à poster dans le bon forum

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2003
    Messages : 38
    Points : 18
    Points
    18
    Par défaut
    Mon problème est que sous Access, lorsque je suis dans un formulaire pour entrer les caracteristiques d'un outil, je lui indique dans une liste déroulante un fournisseur. Mais si je rentre un autre outil, avec le même fournisseur que l'outil précedemment rentré, il me met ce message d'erreur :



    et je ne comprends pas...

    En fait dès que jai le fournisseur qui est utilisé une 2ème fois, il me mets ce message. Normalement un outils doit pouvoir avoir zéro à plusieurs fournisseur. Et un fournisseur doit avoir un outil et peux en avoir plusieurs.

  8. #8
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 70
    Points : 84
    Points
    84
    Par défaut
    Premièrement, tu n'as pas besoin de générateur et de triggers before insert pour ta table OUI_FOURNIR. Tu dois récupérer tes valeurs et faire les ajouts en liens avec ces valeurs. Comme il a été dit précédamment, tu as seulement une clé primaire qui est OUI_NUM et FOU_NUM. Sinon, tu vas avoir des erreurs.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2003
    Messages : 38
    Points : 18
    Points
    18
    Par défaut
    Ok, il n'y a pas de trigger pour cette table OUI_FOURNIR


    Citation Envoyé par Dihap
    Tu dois récupérer tes valeurs et faire les ajouts en liens avec ces valeurs.
    Mais comment je fais pour faire ca? Je n'en ai pas la moindre idée...

  10. #10
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 70
    Points : 84
    Points
    84
    Par défaut
    Ça dépends quand tu fais tes ajouts. Ça devrait être à partir de ton application. J'imagine que tu associes un fournisseur avec un outillage dans ton application. Quand tu sélectionnes tes outils et ton fournisseurs, tu récupères tes numéros et tu fais un ajout.

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

Discussions similaires

  1. [CR9] faire une Jointure externe
    Par coldec dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 28/06/2005, 12h10
  2. Jointure externe compliquée
    Par miniil dans le forum Langage SQL
    Réponses: 9
    Dernier message: 19/02/2004, 09h27
  3. Jointure externe qui ne fonctionne pas
    Par Guizz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/02/2004, 12h26
  4. [ jointure externe ] j'y pompe rien
    Par jaimepasteevy dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/12/2003, 17h57
  5. [Interbase] [Trigger] Codage
    Par AnestheziE dans le forum InterBase
    Réponses: 9
    Dernier message: 06/11/2003, 14h51

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