[SQL] Requêtes mal-écrites.

Résolu
khaoula.85 -  
jee pee Messages postés 31888 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonsoir,

Je devrais créer une structure de données en utilisant les syntaxes de création des tables, des clés primaires et des clés étrangères en se basant sur un modèle physique. Suite à l'exécustion de mes requêtes SQL à l'aide de SQL* Plus Worksheet, je découvre des erreurs que je ne sais pas corriger.
Voici les requêtes que j'ai écrites :

CREATE TABLE FAMILLE
(
code_famille VARCHAR2(2),
nom_famille VARCHAR(40),
taux_rem NUMBER(6,3),
mont_rem NUMBER(18,6),
CONSTRAINT PK_FAMILLE PRIMARY KEY (code_famille));


CREATE TABLE SOUS_FAMILLE
(
code_sf VARCHAR2(4),
nom_sf VARCHAR2(40),
taux_rem NUMBER(18,6),
mont_rem NUMBER(18,6),
code_famille VARCHAR2(2),
CONSTRAINT PK_SOUS_FAMILLE PRIMARY KEY (code_sf),
CONSTRAINT FK_SOUS_FAMILLE FOREIGN KEY (code_famille),
REFERENCE FAMILLE (code_famille));


CREATE TABLE ARTICLE 
(
CODE_ART VARCHAR2(20),
CODE_SF VARCHAR2(4),
DESIGNATION_ART VARCHAR2(50),
US VARCHAR2(2),
UL VARCHAR2(2),
UL_US NUMBER(10,6),
DERNIER_PA NUMBER(18,6),
DATE_SAISIE DATE,
DATE_DERN_MODIF DATE,
CONSTRAINT PK_ARTICLE PRIMARY KEY (CODE_ART),
CONSTRAINT FK_ARTICLE FOREIGN KEY (CODE_SF),
REFERENCE SOUS_FAMILLE (CODE_SF));

CREATE TABLE MAGASIN
(
code_mag VARCHAR2(3),
linelle_mag VARCHAR2(40),
CONSTRAINT PK_MAGASIN PRIMARY KEY (code_mag));

CREATE TABLE ARTICLE_STK_MAGASIN
(
code_mag VARCHAR2(3),
code_art VARCHAR2(20),
qtit_stock NUMBER(10,3),
stock_min NUMBER(10,3),
stock_max NUMBER(10,3),
stock_alerte NUMBER(10,3),
Colonne_7 <Non défini>,
CONSTRAINT PK_ARTICLE_STK_MAGASIN PRIMARY KEY (code_mag),
CONSTRAINT PK_ARTICLE_STK_MAGASIN PRIMARY KEY (code_art),
CONSTRAINT FK_ARTICLE_STK_MAGASIN FOREIGN KEY (code_mag),
CONSTRAINT FK_ARTICLE_STK_MAGASIN FOREIGN KEY (code_art),
REFERENCE ARTICLE (CODE_SF));
                         

CREATE TABLE PRIX_ARTICLE
(
code_art VARCHAR2(20),
code_prix VARCHAR2(2),
prix NUMBER(18,6),
CONSTRAINT PK_PRIX_ARTICLE PRIMARY KEY (code_art),
CONSTRAINT PK_PRIX_ARTICLE PRIMARY KEY (code_prix),
CONSTRAINT FK_PRIX_ARTICLE FOREIGN KEY (code_art),
CONSTRAINT FK_PRIX_ARTICLE FOREIGN KEY (code_prix),
REFERENCE ARTICLE (CODE_SF));

CREATE TABLE PRIX
(
code_prix VARCHAR2(2),
libelle_prix VARCHAR2(30),
CONSTRAINT PK_PRIX PRIMARY KEY (code_prix));

CREATE TABLE TYPE_MVT
(
code_type VARCHAR2(2),
libelle VARCHAR2(30),
signe VARCHAR2(1),
CONSTRAINT PK_TYPE_MVT PRIMARY KEY (code_type));

CREATE TABLE LIGNES_MVT
(
code_type_mvt VARCHAR2(2),
num_mvt VARCHAR2(8),
date_mvt DATE,
CODE_ART VARCHAR2(20),
QUANTITE NUMBER(10,3),
CONSTRAINT FK_LIGNES_MVT FOREIGN KEY (code_type_mvt),
CONSTRAINT FK_LIGNES_MVT FOREIGN KEY (num_mvt),
CONSTRAINT FK_LIGNES_MVT FOREIGN KEY (date_mvt),
CONSTRAINT FK_LIGNES_MVT FOREIGN KEY (CODE_ART));


CREATE TABLE MOUVEMENT
(
code_type_mvt VARCHAR2(2),
num_mvt VARCHAR2(8),
date_mvt DATE,
code_type VARCHAR2(2),
montant_mvt NUMBER(18,6),
code... VARCHAR2(3),
CONSTRAINT PK_MOUVEMENT PRIMARY KEY (code_type_mvt),
CONSTRAINT PK_MOUVEMENT PRIMARY KEY (num_mvt),
CONSTRAINT PK_MOUVEMENT PRIMARY KEY (date_mvt),
CONSTRAINT FK_MOUVEMENT FOREIGN KEY (code_type));


Et voilà les erreurs qu'on m'affiche :
SQL*Plus: Release 9.0.1.0.1 - Production on Lu Fev 25 21:34:33 2008

(c) Copyright 2001 Oracle Corporation. All rights reserved.

Connecté.
Connecté.
CREATE TABLE FAMILLE
*
ERREUR à la ligne 1 :
ORA-00955: Ce nom d'objet existe déjà

CONSTRAINT FK_SOUS_FAMILLE FOREIGN KEY (code_famille),
*
ERREUR à la ligne 9 :
ORA-00905: Mot-clé absent

CONSTRAINT FK_ARTICLE FOREIGN KEY (CODE_SF),
*
ERREUR à la ligne 13 :
ORA-00905: Mot-clé absent

CREATE TABLE MAGASIN
*
ERREUR à la ligne 1 :
ORA-00955: Ce nom d'objet existe déjà

Colonne_7 <Non défini>,
*
ERREUR à la ligne 9 :
ORA-00902: Type de données non valide

CONSTRAINT PK_PRIX_ARTICLE PRIMARY KEY (code_prix),
*
ERREUR à la ligne 7 :
ORA-02260: la table ne peut avoir qu'une clé primaire

CREATE TABLE PRIX
*
ERREUR à la ligne 1 :
ORA-00955: Ce nom d'objet existe déjà

CREATE TABLE TYPE_MVT
*
ERREUR à la ligne 1 :
ORA-00955: Ce nom d'objet existe déjà

CONSTRAINT FK_LIGNES_MVT FOREIGN KEY (code_type_mvt),
*
ERREUR à la ligne 8 :
ORA-00905: Mot-clé absent

date_mvt DATE?
*
ERREUR à la ligne 5 :
ORA-00911: Caractère non valide

Merci de m'éclaircir les lanternes :)

12 réponses

  1. jee pee Messages postés 31888 Date d'inscription   Statut Modérateur Dernière intervention   9 981
     
    il faut que tu fasses un fichier texte supp.sql qui supprime toutes les tables :
    drop table famille;
    drop table sous_famille;
    ...

    que tu executes ce fichier .sql avant de lancer le sql de creation, car sinon tu as les erreurs :
    ERREUR à la ligne 1 :
    ORA-00955: Ce nom d'objet existe déjà

    puisque la table existe dejà elle ne peut pas etre recrée

    * Colonne_7 <Non défini>, ça ne peut pas exister, soit tu enleves la ligne soit tu mets quelquechose comme : colonne_7 varchar2(2) sinon cela ne marchera jamais

    * pour cette erruer là, qui est présente sur le nombreuses tables :
    CONSTRAINT FK_SOUS_FAMILLE FOREIGN KEY (code_famille)
    *
    ERREUR à la ligne 9 :
    ORA-00907: Parenthèse de droite absente

    il faudrait que tu réaffiches le script que tu lances :-)

    3
  2. jee pee Messages postés 31888 Date d'inscription   Statut Modérateur Dernière intervention   9 981
     
    bonsoir,

    regarde la syntaxe des fk ici : https://www.techonthenet.com/oracle/foreign_keys/foreign_keys.php

    sur les lignes pk et fk, il ne faut pas de virgule de séparation en fin,

    une seul PK possible sur une table

    et pour pouvoir tester ton script, il faudrait que tu delete toutes les tables avant de commencer

    et il y a des lignes de description de colonnes incomplètes

    tu devrais tester chaque création individuellement pour corriger pas à pas chaque ordre sql

    cordialement
    0
  3. khaoula.85
     
    Bonjour,

    Merci de ton aide et surtout du lien, le cours est bien clair :)
    J'ai corrigé les fautes que tu as signalé :

    - J'ai supprimé les virgules après la déclaration des clés primaires er étrangères.
    - J'ai complété la déclaration des références qui me manquaient, au début je ne les ai pas écrites car je n'étais pas sûre du syntaxe.

    une seul PK possible sur une table --> Dans le modèle physique qui me fut fourni, dans une table, il y a -parfois- plus d'une clé primaire.

    et pour pouvoir tester ton script, il faudrait que tu delete toutes les tables avant de commencer --> Comment je fais ? Sur SQL* Plus Worksheet, je me connecte en utilisant le nom d'utilisateur et je fais START .... (le chemin qui mène au fichier .sql) puis je recopie ce qu'il y a dans ce fichier, et je fais F5. Des erreurs existent toujours et je ne sais pas pourquoi.

    Je renvoie le code après les modifications que j'ai apportées :

    CREATE TABLE FAMILLE
    (
    code_famille VARCHAR2(2),
    nom_famille VARCHAR(40),
    taux_rem NUMBER(6,3),
    mont_rem NUMBER(18,6),
    CONSTRAINT PK_FAMILLE PRIMARY KEY (code_famille)
    );

    CREATE TABLE SOUS_FAMILLE
    (
    code_sf VARCHAR2(4),
    nom_sf VARCHAR2(40),
    taux_rem NUMBER(18,6),
    mont_rem NUMBER(18,6),
    code_famille VARCHAR2(2),
    CONSTRAINT PK_SOUS_FAMILLE PRIMARY KEY (code_sf),
    CONSTRAINT FK_SOUS_FAMILLE FOREIGN KEY (code_famille)
    REFERENCE FAMILLE (code_famille)
    );

    CREATE TABLE ARTICLE
    (
    CODE_ART VARCHAR2(20),
    CODE_SF VARCHAR2(4),
    DESIGNATION_ART VARCHAR2(50),
    US VARCHAR2(2),
    UL VARCHAR2(2),
    UL_US NUMBER(10,6),
    DERNIER_PA NUMBER(18,6),
    DATE_SAISIE DATE,
    DATE_DERN_MODIF DATE,
    CONSTRAINT PK_ARTICLE PRIMARY KEY (CODE_ART)
    CONSTRAINT FK_ARTICLE FOREIGN KEY (CODE_SF)
    REFERENCE SOUS_FAMILLE (CODE_SF)
    );

    CREATE TABLE MAGASIN
    (
    code_mag VARCHAR2(3),
    linelle_mag VARCHAR2(40),
    CONSTRAINT PK_MAGASIN PRIMARY KEY (code_mag)
    );

    CREATE TABLE ARTICLE_STK_MAGASIN
    (
    code_mag VARCHAR2(3),
    code_art VARCHAR2(20),
    qtit_stock NUMBER(10,3),
    stock_min NUMBER(10,3),
    stock_max NUMBER(10,3),
    stock_alerte NUMBER(10,3),
    Colonne_7 <Non défini>,
    CONSTRAINT PK_ARTICLE_STK_MAGASIN PRIMARY KEY (code_mag)
    CONSTRAINT PK_ARTICLE_STK_MAGASIN PRIMARY KEY (code_art)
    CONSTRAINT FK_ARTICLE_STK_MAGASIN FOREIGN KEY (code_mag)
    CONSTRAINT FK_ARTICLE_STK_MAGASIN FOREIGN KEY (code_art)
    REFERENCE MAGASIN (code_mag,code_art)
    );

    CREATE TABLE PRIX_ARTICLE
    (
    code_art VARCHAR2(20),
    code_prix VARCHAR2(2),
    prix NUMBER(18,6),
    CONSTRAINT PK_PRIX_ARTICLE PRIMARY KEY (code_art)
    CONSTRAINT PK_PRIX_ARTICLE PRIMARY KEY (code_prix)
    CONSTRAINT FK_PRIX_ARTICLE FOREIGN KEY (code_art)
    CONSTRAINT FK_PRIX_ARTICLE FOREIGN KEY (code_prix)
    REFERENCE ARTICLE (code_art,code_prix)
    );

    CREATE TABLE PRIX
    (
    code_prix VARCHAR2(2),
    libelle_prix VARCHAR2(30),
    CONSTRAINT PK_PRIX PRIMARY KEY (code_prix)
    );

    CREATE TABLE TYPE_MVT
    (
    code_type VARCHAR2(2),
    libelle VARCHAR2(30),
    signe VARCHAR2(1),
    CONSTRAINT PK_TYPE_MVT PRIMARY KEY (code_type)
    );

    CREATE TABLE LIGNES_MVT
    (
    code_type_mvt VARCHAR2(2),
    num_mvt VARCHAR2(8),
    date_mvt DATE,
    CODE_ART VARCHAR2(20),
    QUANTITE NUMBER(10,3),
    CONSTRAINT FK_LIGNES_MVT FOREIGN KEY (code_type_mvt)
    CONSTRAINT FK_LIGNES_MVT FOREIGN KEY (num_mvt)
    CONSTRAINT FK_LIGNES_MVT FOREIGN KEY (date_mvt)
    CONSTRAINT FK_LIGNES_MVT FOREIGN KEY (CODE_ART)
    REFERENCE ARTICLE (code_type_mvt,num_mvt,date_mvt,CODE_ART)
    );

    CREATE TABLE MOUVEMENT
    (
    code_type_mvt VARCHAR2(2),
    num_mvt VARCHAR2(8),
    date_mvt DATE,
    code_type VARCHAR2(2),
    montant_mvt NUMBER(18,6),
    code_mag VARCHAR2(3),
    CONSTRAINT PK_MOUVEMENT PRIMARY KEY (code_type_mvt)
    CONSTRAINT PK_MOUVEMENT PRIMARY KEY (num_mvt)
    CONSTRAINT PK_MOUVEMENT PRIMARY KEY (date_mvt)
    CONSTRAINT FK_MOUVEMENT FOREIGN KEY (code_type)
    CONSTRAINT FK_MOUVEMENT FOREIGN KEY (code_mag)
    REFERENCE TYPE_MVT (code_type,code_mag)
    );


    Bonne journée lumineuse :)
    0
  4. joujouwa
     
    Bonjour khaoula,

    il y a juste un probleme au niveau de l'ecriture de la syntaxe pour la clé etrangere c'est pas reference mais c'est REFERENCES avec un S a la fin, tu visite le site donné par l'autre personne il y a le script du programme et il faut mieux de faire un copier-coller et par la suite tu remplaces par tes propres attributs pour éviter les erreurs.

    https://www.techonthenet.com/oracle/foreign_keys/foreign_keys.php

    j'espere que ça va etre utile pour toi.

    cordialement
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jee pee Messages postés 31888 Date d'inscription   Statut Modérateur Dernière intervention   9 981
     
    Il n'y a qu'une PK, mais elle peut comporter plusieurs champs (chp1,chp2,...)

    Avant de relancer ton script, il faudrait supprimer chaque table, par exemple dans un autre .sql qui contiendrait :
    drop table famille;
    drop table sous_famille;
    ...


    Dans ton sql, il faudrait mettre un message (avec la commande prompt) avant chaque commande, comme cela on sait sur quelle commande on a une erreur comme :

    prompt creation TABLE FAMILLE

    CREATE TABLE FAMILLE
    (
    ...

    prompt creation SOUS_FAMILLE

    CREATE TABLE SOUS_FAMILLE
    (


    Tu n'as pas recopié le resultat pour avoir la liste des erreurs, de toute façon ce sera plus lisible avec les instructions comme ci-dessus.

    ca c'est sur c'est une anomalie : Colonne_7 <Non défini>,

    il faut mettre en multi champ, par exemple :

    CONSTRAINT PK_ARTICLE_STK_MAGASIN PRIMARY KEY (code_mag,code_art)

    CONSTRAINT FK_ARTICLE_STK_MAGASIN FOREIGN KEY (code_mag,code_art)
    REFERENCES MAGASIN (code_mag,code_art)
    0
  7. khaoula.85
     
    Me revoili,

    J'espère que mes questions ne sont pas trop chiantes, ce que je n'ai pas compris est le fait de créer un autre fichier .sql dans lequel je supprime les tables. Quel est son interêt ? Et dans ce fichier, il faut que je supprime "toutes" les tables ?
    Pour les clés primaires et étrangères, je les ai rassemblées dans une seule ligne, mais avec plusieurs champs.
    REFERENCES a remplacé REFERENCE.
    Pour le champ Colonne_7 <Non défini>, il est défini comme-ça dans le modèle physique, devrais-je remplacer le "non défini" par la valeur "null" ?

    Enfin, voici les erreurs qu'on me fasse sortir :

    creation TABLE FAMILLE
    CREATE TABLE FAMILLE
    *
    ERREUR à la ligne 1 :
    ORA-00955: Ce nom d'objet existe déjà

    creation TABLE SOUS_FAMILLE
    CONSTRAINT FK_SOUS_FAMILLE FOREIGN KEY (code_famille)
    *
    ERREUR à la ligne 9 :
    ORA-00907: Parenthèse de droite absente

    creation TABLE ARTICLE
    CONSTRAINT FK_ARTICLE FOREIGN KEY (CODE_SF)
    *
    ERREUR à la ligne 13 :
    ORA-00907: Parenthèse de droite absente

    creation TABLE MAGASIN
    CREATE TABLE MAGASIN
    *
    ERREUR à la ligne 1 :
    ORA-00955: Ce nom d'objet existe déjà

    creation TABLE ARTICLE_STK_MAGASIN
    CONSTRAINT FK_ARTICLE_STK_MAGASIN FOREIGN KEY (code_mag,code_art)
    *
    ERREUR à la ligne 10 :
    ORA-00907: Parenthèse de droite absente

    creation TABLE PRIX_ARTICLE
    CONSTRAINT FK_PRIX_ARTICLE FOREIGN KEY (code_art,code_prix)
    *
    ERREUR à la ligne 7 :
    ORA-00907: Parenthèse de droite absente

    creation TABLE PRIX
    CREATE TABLE PRIX
    *
    ERREUR à la ligne 1 :
    ORA-00955: Ce nom d'objet existe déjà

    creation TABLE TYPE_MVT
    CREATE TABLE TYPE_MVT
    *
    ERREUR à la ligne 1 :
    ORA-00955: Ce nom d'objet existe déjà

    creation TABLE LIGNES_MVT
    REFERENCES ARTICLE (code_type_mvt,num_mvt,date_mvt,CODE_ART)
    *
    ERREUR à la ligne 9 :
    ORA-00942: Table ou vue inexistante

    creation TABLE MOUVEMENT
    CONSTRAINT FK_MOUVEMENT FOREIGN KEY (code_type,code_mag)
    *
    ERREUR à la ligne 10 :
    ORA-00907: Parenthèse de droite absente


    J'ai appris beaucoup de choses que je n'ai pas eu l'occasion de voir lors du cours, je t'en remercie :)
    0
  8. khaoula.85
     
    Resalut,

    J'ai fait ce que tu m'as demandée et ça a marché :)

    Reste une erreur est la suivante :

    CONSTRAINT FK_SOUS_FAMILLE FOREIGN KEY (code_famille)
    *
    ERREUR à la ligne 9 :
    ORA-00907: Parenthèse de droite absente

    Voici le script à la din :
    prompt creation TABLE FAMILLE 
    
    CREATE TABLE FAMILLE
    (
    code_famille VARCHAR2(2),
    nom_famille VARCHAR(40),
    taux_rem NUMBER(6,3),
    mont_rem NUMBER(18,6),
    CONSTRAINT PK_FAMILLE PRIMARY KEY (code_famille)
    );
    
    prompt creation TABLE SOUS_FAMILLE 
    CREATE TABLE SOUS_FAMILLE
    (
    code_sf VARCHAR2(4),
    nom_sf VARCHAR2(40),
    taux_rem NUMBER(18,6),
    mont_rem NUMBER(18,6),
    code_famille VARCHAR2(2),
    CONSTRAINT PK_SOUS_FAMILLE PRIMARY KEY (code_sf)
    CONSTRAINT FK_SOUS_FAMILLE FOREIGN KEY (code_famille)
    REFERENCES FAMILLE (code_famille)
    );
    
    prompt creation TABLE ARTICLE
    CREATE TABLE ARTICLE 
    (
    CODE_ART VARCHAR2(20),
    CODE_SF VARCHAR2(4),
    DESIGNATION_ART VARCHAR2(50),
    US VARCHAR2(2),
    UL VARCHAR2(2),
    UL_US NUMBER(10,6),
    DERNIER_PA NUMBER(18,6),
    DATE_SAISIE DATE,
    DATE_DERN_MODIF DATE,
    CONSTRAINT PK_ARTICLE PRIMARY KEY (CODE_ART)
    CONSTRAINT FK_ARTICLE FOREIGN KEY (CODE_SF)
    REFERENCES SOUS_FAMILLE (CODE_SF)
    );
    
    prompt creation TABLE MAGASIN
    CREATE TABLE MAGASIN
    (
    code_mag VARCHAR2(3),
    linelle_mag VARCHAR2(40),
    CONSTRAINT PK_MAGASIN PRIMARY KEY (code_mag)
    );
    
    prompt creation TABLE ARTICLE_STK_MAGASIN
    CREATE TABLE ARTICLE_STK_MAGASIN
    (
    code_mag VARCHAR2(3),
    code_art VARCHAR2(20),
    qtit_stock NUMBER(10,3),
    stock_min NUMBER(10,3),
    stock_max NUMBER(10,3),
    stock_alerte NUMBER(10,3),
    CONSTRAINT PK_ARTICLE_STK_MAGASIN PRIMARY KEY (code_mag,code_art)
    CONSTRAINT FK_ARTICLE_STK_MAGASIN FOREIGN KEY (code_mag,code_art)
    REFERENCES MAGASIN (code_mag,code_art)
    );
    
    
    prompt creation TABLE PRIX_ARTICLE
    CREATE TABLE PRIX_ARTICLE
    (
    code_art VARCHAR2(20),
    code_prix VARCHAR2(2),
    prix NUMBER(18,6),
    CONSTRAINT PK_PRIX_ARTICLE PRIMARY KEY (code_art,code_prix)
    CONSTRAINT FK_PRIX_ARTICLE FOREIGN KEY (code_art,code_prix)
    REFERENCES ARTICLE (code_art,code_prix)
    );
    
    prompt creation TABLE PRIX
    CREATE TABLE PRIX
    (
    code_prix VARCHAR2(2),
    libelle_prix VARCHAR2(30),
    CONSTRAINT PK_PRIX PRIMARY KEY (code_prix)
    );
    
    prompt creation TABLE TYPE_MVT
    CREATE TABLE TYPE_MVT
    (
    code_type VARCHAR2(2),
    libelle VARCHAR2(30),
    signe VARCHAR2(1),
    CONSTRAINT PK_TYPE_MVT PRIMARY KEY (code_type)
    );
    
    prompt creation TABLE LIGNES_MVT
    CREATE TABLE LIGNES_MVT
    (
    code_type_mvt VARCHAR2(2),
    num_mvt VARCHAR2(8),
    date_mvt DATE,
    CODE_ART VARCHAR2(20),
    QUANTITE NUMBER(10,3),
    CONSTRAINT FK_LIGNES_MVT FOREIGN KEY (code_type_mvt,num_mvt,date_mvt,CODE_ART)
    REFERENCES ARTICLE (code_type_mvt,num_mvt,date_mvt,CODE_ART)
    );
    
    prompt creation TABLE MOUVEMENT
    CREATE TABLE MOUVEMENT
    (
    code_type_mvt VARCHAR2(2),
    num_mvt VARCHAR2(8),
    date_mvt DATE,
    code_type VARCHAR2(2),
    montant_mvt NUMBER(18,6),
    code_mag VARCHAR2(3),
    CONSTRAINT PK_MOUVEMENT PRIMARY KEY (code_type_mvt,num_mvt,date_mvt)
    CONSTRAINT FK_MOUVEMENT FOREIGN KEY (code_type,code_mag)
    REFERENCES TYPE_MVT (code_type,code_mag)
    );


    Merci :)
    0
  9. jee pee Messages postés 31888 Date d'inscription   Statut Modérateur Dernière intervention   9 981
     
    en fait j'avais été trop rapide dans ma première explication,

    il faut bien une virgule entre chaque contrainte (mais pas sur la FK entre sa definition et la reference)

    donc :

    ...
    code_famille VARCHAR2(2) ,
    CONSTRAINT PK_SOUS_FAMILLE PRIMARY KEY (code_sf) ,
    CONSTRAINT FK_SOUS_FAMILLE FOREIGN KEY (code_famille)
    REFERENCES FAMILLE (code_famille)
    );


    on devrait approcher de la fin :-))
    0
  10. khaoula.85
     
    Bonsoir,
    Je commence à me sentir trop lourde et j'ai honte de dire que ça génére encore des erreurs, cette fois-ci c'est différent :
    (J'ai recopié même le résultat de l'exécution de la suppression des tables)

    SQL*Plus: Release 9.0.1.0.1 - Production on Je Fev 28 20:37:48 2008
    
    (c) Copyright 2001 Oracle Corporation.  All rights reserved.
    
    Connecté.
    Connecté.
    DROP TABLE FAMILLE
               *
    ERREUR à la ligne 1 :
    ORA-02449: clés uniques/primaires de la table référencées par des clés
    étrangères
    
    
    DROP TABLE SOUS_FAMILLE
               *
    ERREUR à la ligne 1 :
    ORA-02449: clés uniques/primaires de la table référencées par des clés
    étrangères
    
    
    
    Table supprimée.
    
    
    Table supprimée.
    
    DROP TABLE ARTICLE_STK_MAGASIN
               *
    ERREUR à la ligne 1 :
    ORA-00942: Table ou vue inexistante
    
    
    DROP TABLE PRIX_ARTICLE
               *
    ERREUR à la ligne 1 :
    ORA-00942: Table ou vue inexistante
    
    
    
    Table supprimée.
    
    
    Table supprimée.
    
    DROP TABLE LIGNES_MVT
               *
    ERREUR à la ligne 1 :
    ORA-00942: Table ou vue inexistante
    
    
    DROP TABLE MOUVEMENT
               *
    ERREUR à la ligne 1 :
    ORA-00942: Table ou vue inexistante
    
    
    Connecté.
    DROP TABLE FAMILLE
               *
    ERREUR à la ligne 1 :
    ORA-02449: clés uniques/primaires de la table référencées par des clés
    étrangères
    
    
    
    Table supprimée.
    
    DROP TABLE ARTICLE
               *
    ERREUR à la ligne 1 :
    ORA-00942: Table ou vue inexistante
    
    
    DROP TABLE MAGASIN
               *
    ERREUR à la ligne 1 :
    ORA-00942: Table ou vue inexistante
    
    
    DROP TABLE ARTICLE_STK_MAGASIN
               *
    ERREUR à la ligne 1 :
    ORA-00942: Table ou vue inexistante
    
    
    DROP TABLE PRIX_ARTICLE
               *
    ERREUR à la ligne 1 :
    ORA-00942: Table ou vue inexistante
    
    
    DROP TABLE PRIX
               *
    ERREUR à la ligne 1 :
    ORA-00942: Table ou vue inexistante
    
    
    DROP TABLE TYPE_MVT
               *
    ERREUR à la ligne 1 :
    ORA-00942: Table ou vue inexistante
    
    
    DROP TABLE LIGNES_MVT
               *
    ERREUR à la ligne 1 :
    ORA-00942: Table ou vue inexistante
    
    
    DROP TABLE MOUVEMENT
               *
    ERREUR à la ligne 1 :
    ORA-00942: Table ou vue inexistante
    
    
    creation TABLE FAMILLE
    CREATE TABLE FAMILLE
                 *
    ERREUR à la ligne 1 :
    ORA-00955: Ce nom d'objet existe déjà
    
    
    creation TABLE SOUS_FAMILLE
    
    Table créée.
    
    creation TABLE ARTICLE
    
    Table créée.
    
    creation TABLE MAGASIN
    
    Table créée.
    
    creation TABLE ARTICLE_STK_MAGASIN
    REFERENCES MAGASIN (code_mag,code_art)
                                 *
    ERREUR à la ligne 11 :
    ORA-00904: Nom de colonne non valide
    
    
    creation TABLE PRIX_ARTICLE
    REFERENCES ARTICLE (code_art,code_prix)
                                 *
    ERREUR à la ligne 8 :
    ORA-00904: Nom de colonne non valide
    
    
    creation TABLE PRIX
    
    Table créée.
    
    creation TABLE TYPE_MVT
    
    Table créée.
    
    creation TABLE LIGNES_MVT
    REFERENCES ARTICLE (code_type_mvt,num_mvt,date_mvt,CODE_ART)
                        *
    ERREUR à la ligne 9 :
    ORA-00904: Nom de colonne non valide
    
    
    creation TABLE MOUVEMENT
    CONSTRAINT FK_MOUVEMENT FOREIGN KEY (code_type,code_mag)
                                                   *
    ERREUR à la ligne 10 :
    ORA-00904: Nom de colonne non valide
    
    Pourtant, j'ai ajouté les virgules, je me demande si dans ce cas : 
    prompt creation TABLE PRIX
    CREATE TABLE PRIX
    (
    code_prix VARCHAR2(2),
    libelle_prix VARCHAR2(30),
    CONSTRAINT PK_PRIX PRIMARY KEY (code_prix)
    );


    Faut-il que je mette un virgule après la contrainte ?

    Bien des choses à toi :)
    0
  11. jee pee Messages postés 31888 Date d'inscription   Statut Modérateur Dernière intervention   9 981
     
    pour les drop de table

    si tu n'as pas encore creer des enregistrement dans les tables, il faudrait supprimer celles qui ont des clés étrangeres (FK) avant celle qui contient la FK de reference en fait :

    il faut creer le pere puis le fils (avec FK) et
    il faut supprimer le fils puis le père

    (en lancant 3 fois le sql de drop cela devrait toutes les supprimer aussi :-))
    -----------------------
    Pourtant, j'ai ajouté les virgules, je me demande si dans ce cas :
    prompt creation TABLE PRIX
    CREATE TABLE PRIX
    (
    code_prix VARCHAR2(2),
    libelle_prix VARCHAR2(30),
    CONSTRAINT PK_PRIX PRIMARY KEY (code_prix)
    );
    Faut-il que je mette un virgule après la contrainte ?


    NON, la virgule ne sert qu'à la separation s'il y a plusieurs contraintes (par exemple une PK et une FK)
    -------------------------
    pour les erreurs de type :

    creation TABLE ARTICLE_STK_MAGASIN
    REFERENCES MAGASIN (code_mag,code_art)
    *
    ERREUR à la ligne 11 :
    ORA-00904: Nom de colonne non valide


    La FK doit faire reference à un champ qui doit exister dans la table etrangère. Code_art n'est pas un champ de la table magasin, la FK doit juste être :

    CONSTRAINT FK_ARTICLE_STK_MAGASIN FOREIGN KEY (code_mag)
    REFERENCES MAGASIN (code_mag)
    0
  12. khaoula.85
     
    Salut,
    GRACE A TOI, J'AI PU CREER TOUTES LES TABLES ET JE T'EN REMERCIE INFINIMENT :)
    Je suis très contente !

    Un petit cadeau de chez moi:)
    0
    1. jee pee Messages postés 31888 Date d'inscription   Statut Modérateur Dernière intervention   9 981
       
      merci, bonne continuation
      0
  13. valentino
     
    salut tout le monde , voila j'epsere bien avoir de l'aider pour a fin de detecté l'erreur

    CREATE TABLE "FIL"
    ( "ID_FIL" NUMBER NOT NULL ENABLE ,
    "COULEUR" VARCHAR2(40) NOT NULL ENABLE,
    "ID_TYPE_FIL" NUMBER NOT NULL ENABLE,

    CONSTRAINT "FIL_PK" PRIMARY KEY ("ID_FIL") ENABLE,
    CONSTRAINT "FIL_FK2" FORGEIN KEY ("ID_TYPE_FIL")
    REFERENCES "TYPE_FIL" ("ID_TYPE_FIL") ON DELETE CASCADE ENABLE
    )

    ORA-00907: parenthèse de droite absente
    merci
    0
    1. jee pee Messages postés 31888 Date d'inscription   Statut Modérateur Dernière intervention   9 981
       
      Salut,

      il est possible que ce soit parce que tu as une ligne à blanc au milieu, la commande serait alors considérée comme terminée, mais bien sur en erreur, car incomplète.
      0