Clé étrangère et vue

Signaler
Messages postés
363
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
29 janvier 2007
-
Messages postés
363
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
29 janvier 2007
-
Bonjour,

J'ai cherché la réponse à ma question mais je n'ai rien trouvé
Est-il possible de créer une table ayant une clé étrangère (en fait ça sera la clé primaire avec une autre clé étrangère) sur une vue???

Merci de votre aide!

11 réponses

Messages postés
559
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
5 septembre 2007
1
Je ne pense pas que cela soit possible, tu utilises quel SGBD ?
Messages postés
363
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
29 janvier 2007
1
Oups désolée, j'ai oublié de la dire : SQL SERVER.

Mais en fait je sais pas comment faire parce que j'ai pas vraiment le choix, ce que je fais doit être relié à un autre projet et pour cela je dois faire un lien avec cette vue (même si j'en ai pas envie ). En fait je dois faire une table qui fera le lien entre une de mes tables et cette vue (et vu les cardinalités, ben cette nouvelle table aura une clé primaire constitué de deux clé étragères, une sur la table, et une sur la vue ...).

Là, je coince !!!
Messages postés
559
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
5 septembre 2007
1
Après lecture de la doc, il n'est écrit nulle part que c'est impossible.
Je pense tout de même que la liaison directement à la table serait mieux ^^

Bon courage !
Messages postés
363
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
29 janvier 2007
1
J'aurais bien aimé mais apparemment j'ai pas le droit
Moi aussi j'ais trouvé nul part que c'était interdit (je cherche depuis hier), par contre j'ai essayé de la faire, et j'ai pas réussi :

Voilà mon code :
CREATE TABLE devis_clientAffaire
(
numDevis VARCHAR(6) REFERENCES devis_affaires(numDevis),
IdClient INTEGER REFERENCES tbl_clients(IdClient),
CONSTRAINT PK_clientAffaires PRIMARY KEY (numDevis,IdClient)
);

Et voilà je ce me dis SQL Server :
Serveur : Msg 1768, Niveau 16, État 1, Ligne 1
La clé étrangère 'FK__devis_cli__IdCli__3163F3EF' fait référence à l'objet 'tbl_clients' qui n'est pas une table d'utilisateur.
Serveur : Msg 1750, Niveau 16, État 1, Ligne 1
Impossible de créer la contrainte. Voir les erreurs précédentes.
Messages postés
559
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
5 septembre 2007
1
Ah, là il s'agit peut-être des droits...
A qui appartient la table devis_clientAffaire ?
et tbl_clients ?
Messages postés
363
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
29 janvier 2007
1
Ben c'est ma table mais pas ma vue. J'ai demandé à l'adminisatrateur de la base, il m'a dit qu'il n'y a aucun droit spécifique sur la vue.
Messages postés
559
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
5 septembre 2007
1
Euh,

si tu as Entreprise Manager, vérifie les propriétaires :
dbo ou autre...
a mon avis :
tbl_clients appartient à "dbo"
devis_ClientsAffaires appartient à "chamallow"

Ce n'est pas une question de droit là,
Messages postés
363
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
29 janvier 2007
1
Bon, alors j'ai regardé, c'est toujours dbo le propriétaire ...

Peut-être que c'est impossible ... Mais j'ai rien trouvé qui le signalait ...
Messages postés
363
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
29 janvier 2007
1
Bon, même si sur la table principale y'avais une clé primaire, c'est il
n'y en a pas déjà sur la vue, et puis c'est une vue qui est dans la
base où se trouve ma table mais c'est une vue d'une table d'une autre
base ...



Alors qu'en pensez-vous?
Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
20 mai 2011
2
salut

pourquoi ne pas faire le lien directement avec la table sur laquelle s'appuie la vue ?


si j'ai bien compris, comme tu as plusieurs projets, la table avec laquelle tu veux creer ta clef etrangere se trouve dans une autre base de données ?





si c'est ca, dans tous les cas je ne pense pas que tu pourra créer une contrainte d'intégrité.


par contre ce que tu peux faire, c'est un trigger, qui verifie a chaque a jout, suppression, modification, si ta contrainte est respectée.
Messages postés
363
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
29 janvier 2007
1
Oui je crois qu c'est ce que je vais faire :)

Merci pour vos réponses!