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

MS SQL Server Discussion :

impossible de crée un Foreign key


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Par défaut impossible de crée un Foreign key
    salut les forumeurs :=)
    Je n’arrive pas a comprendre pour quoi cette ligne de commande ne s’exécute pas correctement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE PasseExamen
    (
    NoExamen integer not null,
    IdAuditeur integer not null,
    Note float(2),
    PRIMARY KEY(NoExamen, IdAuditeur),
    FOREIGN KEY (NoExamen, IdAuditeur) REFERENCES auditeur,examan (NoExamen, IdAuditeur)
    )
    un message d’erreur de type
    Serveur : Msg 173, Niveau 15, État 1, Ligne 7
    La définition de la colonne 'examan' doit comporter un type de données.
    Les deux tables auditeur,examan sont déjà crée

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 219
    Par défaut
    Bonjour,

    Je sais que cela est stupide, mais as tu vérifier les clés de la table examan.

    Tornade

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Mauvais syntaxe : vous donnez le nom de colonne là ou il faut un nom de table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FOREIGN KEY (NoExamen, IdAuditeur) REFERENCES auditeur,examan (NoExamen, IdAuditeur)
    Devrait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FOREIGN KEY (NoExamen, IdAuditeur) REFERENCES UneTable (NoExamen, IdAuditeur)
    A lire sur les FK : http://sqlpro.developpez.com/cours/s...partie2#L7.2.4


    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre éclairé Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Par défaut
    Mais nn, ce que je veu faire c’est crée une table PasseExamen qui contient la clé (No_Auditeur,No_Examen) tel que No_Auditeur c’est la clé primaire de la table auditeur, et No_Examen c’est la clé de la table Examen,
    C'est-à-dire PasseExamen c’est une table exploser :=)
    MLD :
    Auditeur(No_Auditeur,Nom_Auditeur)
    Exmen(No_Examen,DateExamen,salleExamen)
    PasseExamen(No_Auditeur, No_Examen,NoteExamen)
    J’ai bien créer la deux première table mais le problème c’est avec la 3 eme
    merci d'avence

  5. #5
    Rédactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 636
    Par défaut
    La réponse correcte t'es donnée ci dessus http://www.developpez.net/forums/sho...73&postcount=3

    ci ca ne convient toujours pas, ne pas hésiter a donner le message d'erreur. Mais dans le post précédent, il fait bien le lien entre les tables que tu souhaites.


    Citation Envoyé par amazircool Voir le message
    Mais nn, ce que je veu faire c’est crée une table PasseExamen qui contient la clé (No_Auditeur,No_Examen) tel que No_Auditeur c’est la clé primaire de la table auditeur, et No_Examen c’est la clé de la table Examen,
    C'est-à-dire PasseExamen c’est une table exploser :=)
    MLD :
    Auditeur(No_Auditeur,Nom_Auditeur)
    Exmen(No_Examen,DateExamen,salleExamen)
    PasseExamen(No_Auditeur, No_Examen,NoteExamen)
    J’ai bien créer la deux première table mais le problème c’est avec la 3 eme
    merci d'avence
    la culture c'est comme la confiture moins on en a plus on l'étale.

    Mes tutos

  6. #6
    Membre éclairé Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Mauvais syntaxe : vous donnez le nom de colonne là ou il faut un nom de table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FOREIGN KEY (NoExamen, IdAuditeur) REFERENCES auditeur,examan (NoExamen, IdAuditeur)
    Devrait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FOREIGN KEY (NoExamen, IdAuditeur) REFERENCES UneTable (NoExamen, IdAuditeur)
    A lire sur les FK : http://sqlpro.developpez.com/cours/s...partie2#L7.2.4


    A +
    Merci SQLpro mais tu veux dire quoi avec UneTable :=) normalement je doit mentionner les deux tables auditeur et Examen en même temps?

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    S'agissant d'une auto référence il faut mettre la même table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FOREIGN KEY (NoExamen, IdAuditeur) REFERENCES PasseExamen (NoExamen, IdAuditeur)
    Cependant votre modèle est incohérent car il boucle en fermeture transitive complète ce qui est impossible. Autrement dit vous ne pourrez jamais rien insérer dans votre modèle....

    Commencez par spécifier votre besoin enterme littéral !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Membre éclairé Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Par défaut
    Merci frere SQLpro sa marche très bien maintenant, c'est-à-dire en cas d’une table qui contient deux attributs qui jeux le rôle de clé ,la références est c’est la table elle-même ?
    Autre question SVP comment je peu récupérer le code SQL de la table auditeur par exemple, c'est-à-dire je veux afficher le code SQL CRETATE TABLE auditeur… de la table auditeur.
    3 eme question :=) comment je peu prendre ma base avec moi (maison<=>travail) ?
    La dernière pouvez vous me dire a quoi sert la "COLLATE French_CI_AS"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE TABLE [auditeur] (
    	[IdAuditeur] [int] NOT NULL ,
    	[Nom] [varchar] (20) COLLATE French_CI_AS NOT NULL ,
    Merci d’avance

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/07/2007, 09h32
  2. Drop Foreign Key impossible
    Par SetaSensei dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 21/05/2007, 10h21
  3. [IB71] Je ne peux plus supprimer mes foreign key...
    Par BoeufBrocoli dans le forum InterBase
    Réponses: 3
    Dernier message: 19/09/2003, 14h39
  4. [postgresql][foreign key]
    Par elea1206 dans le forum Requêtes
    Réponses: 5
    Dernier message: 28/08/2003, 12h07
  5. [Foreign Key] Besoin d'explication.
    Par Andry dans le forum Débuter
    Réponses: 4
    Dernier message: 28/05/2003, 11h34

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