Oracle manipulation table

Fermé
Sharky1x Messages postés 63 Date d'inscription jeudi 10 juillet 2008 Statut Membre Dernière intervention 21 décembre 2015 - 13 févr. 2009 à 00:52
masterx_goldman Messages postés 75 Date d'inscription mercredi 6 février 2008 Statut Membre Dernière intervention 28 juillet 2009 - 13 févr. 2009 à 15:01
Bonjour,
voila j ai cree une table detaillivraison
je veux inserer des valeur mais je recoi une erreur
SQL> CREATE TABLE DetailLivraison
2 (noLivraison INTEGER NOT NULL,
3 noCommande INTEGER NOT NULL,
4 noArticle INTEGER NOT NULL,
5 quantitéLivrée INTEGER NOT NULL,
6 PRIMARY KEY (noLivraison, noCommande),
7 FOREIGN KEY (noLivraison) REFERENCES Livraison,
8 FOREIGN KEY (noCommande, noArticle) REFERENCES LigneCommande);

Table créée.

SQL>
SQL> insert into detaillivraison values (1,1,1,1);
insert into detaillivraison values (1,1,1,1)
*
ERREUR à la ligne 1 :
ORA-02291: violation de contrainte d'intégrité (SCOTT.SYS_C005456) - clé parent
introuvable




voila toute les table crees

CREATE TABLE Client
(noClient INTEGER NOT NULL,
nomClient VARCHAR(20) NOT NULL,
noTéléphone VARCHAR(15) NOT NULL,
PRIMARY KEY (noClient)
)

CREATE TABLE Article
(noArticle INTEGER NOT NULL,
description VARCHAR(20) NOT NULL,
prixUnitaire DECIMAL(10,2) NOT NULL,
quantitéEnStock INTEGER NOT NULL,
PRIMARY KEY (noArticle))

CREATE TABLE Commande
(noCommande INTEGER NOT NULL,
dateCommande DATE NOT NULL,
noClient INTEGER NOT NULL,
PRIMARY KEY (noCommande),
FOREIGN KEY (noClient) REFERENCES Client
)

CREATE TABLE LigneCommande
(noCommande INTEGER NOT NULL,
noArticle INTEGER NOT NULL,
quantité INTEGER NOT NULL,
PRIMARY KEY (noCommande, noArticle),
FOREIGN KEY (noCommande) REFERENCES Commande,
FOREIGN KEY (noArticle) REFERENCES Article
)

CREATE TABLE Livraison
(noLivraison INTEGER NOT NULL,
dateLivraison DATE NOT NULL,
PRIMARY KEY (noLivraison)
)

CREATE TABLE DétailLivraison
(noLivraison INTEGER NOT NULL,
noCommande INTEGER NOT NULL,
noArticle INTEGER NOT NULL,
quantitéLivrée INTEGER NOT NULL,
PRIMARY KEY (noLivraison, noCommande, noArticle),
FOREIGN KEY (noLivraison) REFERENCES Livraison,
FOREIGN KEY (noCommande, noArticle) REFERENCES LigneCommande


merci

3 réponses

masterx_goldman Messages postés 75 Date d'inscription mercredi 6 février 2008 Statut Membre Dernière intervention 28 juillet 2009 8
13 févr. 2009 à 15:01
Oui , tout à fait raison , c'est ça :

Une contrainte se désactive de la manière suivante :

ALTER TABLE ma_table DISABLE CONSTRAINT ma_constraint;

et se réactive :

ALTER TABLE ma_table ENABLE CONSTRAINT ma_constraint;

Remarque : ici " ma_constraint " c'est la contrainte de clé étrangère que tu veux désactiver

a+
2
masterx_goldman Messages postés 75 Date d'inscription mercredi 6 février 2008 Statut Membre Dernière intervention 28 juillet 2009 8
13 févr. 2009 à 10:00
lorsque tu crée plusieurs tables en sql , tu dois:

1) commencer par créer les tables référencées avant celles qui les référencent .
2) remplir les tables référencées par des tuples avant les tables qui les référencent , sinon les tuples que tu insère ne vont pas être acceptés !

propositions :

si tu es débutant(e) en sql :

supprime toutes les tables et refais la création des tables et l'insertion comme je t'ai expliqué.

si tu connais bien sql :

tu désactive les contraintes de clés étrangères , tu fais l'insertion , puis enfin tu les réactives


fais moi signe de ce que tu as fait

bon courage :)
2
Sharky1x Messages postés 63 Date d'inscription jeudi 10 juillet 2008 Statut Membre Dernière intervention 21 décembre 2015 2
13 févr. 2009 à 14:49
desole mais comment faire pour désactive les contraintes de clés étrangères puis les reactive apres ;
je veux dire on utilise ALTER ???


merci;
2