Partage
  • Partager sur Facebook
  • Partager sur Twitter

SQL - Deux clés étrangères vers un clé primairee

Clés étrangères

    8 août 2018 à 15:57:14

    Bonjour à tous,

    Je construit une BDD et je suis confronté à la problématique suivante :

    J'ai une table Compte avec un IdCompte (clé primaire) et deux autres colonnes soit IdPropriétaire et IdUtilisateur. Ces deux colonnes doivent être liées à la table Contact avec un IdContact (clé primaire). Je souhaite donc créer deux clés étrangères une pour IdPropriétaire et une pour IdUtilisateur vers IdContact.

    Je veux également configurer ces deux clés étrangères en UPDATE CASCADE. Mais cela semble impossible. En effet, il m'est impossible de créer ma seconde clé étrangère.

    Avez-vous une solution pour que mes IdPropriétaire et IdUtilisateur soient liées tous les deux à l'IdContact de la table Contact ?

    je vous remercie pour votre aide.

    JJ

    -
    Edité par BastienJallabert 9 août 2018 à 13:03:51

    • Partager sur Facebook
    • Partager sur Twitter
      9 août 2018 à 13:48:49

      Comment ça il n'est pas possible de créer une seconde clef étrangère ? Quelle est la manipulation que tu tente ? Quel est le message d'erreur ?

      Ceci devrait etre la bonne commance:

      CREATE TABLE Compte (
        idCompte INTEGER,
        idProprietaire INTEGER NOT NULL,
        idUtilisateur INTEGER NOT NULL,
        PRIMARY KEY(idCompte),
        FOREIGN KEY(idProprietaire) REFERENCES Contact(idContact) ON UPDATE CASCADE,
        FOREIGN KEY(idUtilisateur) REFERENCES Contact(idContact) ON UPDATE CASCADE
      );


      Attention toutefois pour le ON UPDATE CASCADE. Cette clause ne devrait pas exister, car il ne devrait pas être possible de modifier la valeur de idContact !

      • Partager sur Facebook
      • Partager sur Twitter
        9 août 2018 à 16:59:33

        Je te remercie pour ta réponse. C'est exactement ce que j'avais essayé. Mais ci-dessous l'erreur que j'ai :

        Création de contrainte sans nom sur [dbo].[TableCompte]...

        Création de contrainte sans nom sur [dbo].[TableCompte]...

        (82,1): SQL72014: .Net SqlClient Data Provider: Msg 1785, Niveau 16, État 0, Ligne 1 Introducing FOREIGN KEY constraint 'FK__TableCompt__IdIA__3434A84B' on table 'TableCompte' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.

        (82,0): SQL72045: Erreur d'exécution de script.  Script exécuté :

        ALTER TABLE [dbo].[TableCompte] WITH NOCHECK

            ADD FOREIGN KEY ([IdIA]) REFERENCES [dbo].[TableContact] ([IdContacts]) ON UPDATE CASCADE;


        (82,1): SQL72014: .Net SqlClient Data Provider: Msg 1750, Niveau 16, État 1, Ligne 1 Could not create constraint or index. See previous errors.

        (82,0): SQL72045: Erreur d'exécution de script.  Script exécuté :

        ALTER TABLE [dbo].[TableCompte] WITH NOCHECK

            ADD FOREIGN KEY ([IdIA]) REFERENCES [dbo].[TableContact] ([IdContacts]) ON UPDATE CASCADE;


        Une erreur s'est produite lors de l'exécution du lot.


        Merci pour ton aide.

        -
        Edité par BastienJallabert 10 août 2018 à 7:58:40

        • Partager sur Facebook
        • Partager sur Twitter
          9 août 2018 à 21:59:36

          Il faudrait pouvoir avoir les autres tables, de façon à ce qu'on puisse reproduire le problème.
          • Partager sur Facebook
          • Partager sur Twitter

          SQL - Deux clés étrangères vers un clé primairee

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown