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 :

Erreur Création de table


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2014
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 75
    Par défaut Erreur Création de table
    Bonsoir,
    Pourriez-vous m'apporter votre aide, je bloque sur la création de ce code Sql.

    Impossible de créer la table Patient. Renvoie une erreur de syntaxe.

    - ATIENT (numSS, nomPat, prenomPat, sexe, dateNaiss, numRPPS) (pKey => numSS)
    - MEDECIN (numRPPS, nomMed, prenomMed, specialite, ville, adresse) (pKey => numRPPS)
    - CONSULTE (numRPPS, numSS, date, diagnostic, ordonnance) (pKey => numRPPS, numSS, date)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    CREATE Table [dbo].[MEDECIN] (
    			[numRPPS] [int] NOT NULL,
    			[nomMed] [VARCHAR] (10) NOT NULL,
    			[prenomMed] [VARCHAR] (10) NOT NULL,
    			[specialite] [VARCHAR] (15) NULL,
    			[ville] [VARCHAR] (10) NULL,
    			[adresse] [VARCHAR] (20) NULL,
    			CONSTRAINT [pk_MedecinnumRPPS] PRIMARY KEY(numRPPS)
    );
    
    CREATE Table [dbo].[CONSULTE] (
    			[numRPPS] [int] NOT NULL,
    			[numSS] [int] NOT NULL,
    			[date] [datetime] NOT NULL,
    			[diagnostic] [VARCHAR] (20) NULL,
    			[ordonnance] [VARCHAR] (50) NULL,
    			CONSTRAINT [pk_ConsultenuRPSDat] PRIMARY KEY(numRPPS, numSS, date)
    );
    CREATE Table [dbo].[PATIENT] (
    		[numSS] [int] NOT NULL,
    		[nomPat] [VARCHAR] (10) NOT NULL,
    		[prenomPat] [VARCHAR] (10) NOT NULL,
    		[sexe] [nchar] (1) NOT NULL,
    		[dateNaiss] [datetime] NULL,
    		[numRPPS] [int] NULL,
    		CONSTRAINT [pk_PatientnumSS] PRIMARY KEY (numSS),
    		FOREIGN KEY [numRPPS] REFERENCES [MEDECIN] [numRPPS],
    		FOREIGN KEY [numSS] REFERENCES [CONSULTE] [numSS],
    		FOREIGN KEY [numRPPS] REFERENCES [CONSULTE] [numRPPS],
    		FOREIGN KEY [dateNaiss] REFERENCES [CONSULTE] [date]
    );
    Msg*102, Niveau*15, État*1, Ligne*9
    Syntaxe incorrecte vers 'numRPPS'.
    Je ne comprends pas !
    Merci de votre aide.

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 600
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 600
    Billets dans le blog
    10
    Par défaut
    Bonjour,
    Je vois que vous avez nommé une colonne "date", ce n'est pas préconisé d'utiliser des noms réservés SQL, vous serez contraint d'encadrer vos colonnes avec des quotes, c'est peu pratique.

  3. #3
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    La déclaration de vos contraintes d'intégrité référentielle est incorrecte.


    une façon de faire (il en existe d'autres )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    CREATE Table [dbo].[PATIENT] (
    		[numSS] [int] NOT NULL,
    		[nomPat] [VARCHAR] (10) NOT NULL,
    		[prenomPat] [VARCHAR] (10) NOT NULL,
    		[sexe] [nchar] (1) NOT NULL,
    		[dateNaiss] [datetime] NULL,
    		[numRPPS] [int] NULL,
    		CONSTRAINT [pk_PatientnumSS] PRIMARY KEY (numSS),
    		CONSTRAINT FK_patient_medecin FOREIGN KEY ([numRPPS]) REFERENCES [MEDECIN] [numRPPS],
    		CONSTRAINT FK_patient_consulte FOREIGN KEY ([numSS],[numRPPS],[dateNaiss]) REFERENCES [CONSULTE] (numRPPS, numSS, date)
    );

    Quelques remarques au passage :

    Un numéro de sécu est une mauvaise clef primaire : quid des personnes sans N°, des enfants rattachés aux numéros de leur parent. De plus, vous l'avez mis en INT, mais un numéro de sécu peut contenir une lettre pour les personnes nées en Corse...
    choisissez plutôt une clef primaire numérique courte, stable, et asémantique.
    Même remarque pour la clef primaire de la table MEDECIN.

Discussions similaires

  1. Erreur création de table sous mysql 5.5
    Par pelloq1 dans le forum Requêtes
    Réponses: 12
    Dernier message: 28/10/2011, 20h46
  2. [MySQL] Erreur création de table
    Par oclone dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 31/07/2008, 13h03
  3. Erreur sur Création de Table
    Par lailai dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/12/2007, 15h59
  4. erreur sur script création de tables
    Par PickEpique dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/03/2007, 18h24

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