Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/12/2010, 15h51   #1
Membre du Club
 
bean sean
Inscription : avril 2010
Messages : 120
Détails du profil
Informations personnelles :
Nom : bean sean
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : avril 2010
Messages : 120
Points : 46
Points : 46
Par défaut Nommage clef étrangère

Bonjour,


En référence à ce sujet :
http://www.developpez.net/forums/d73...e-foreign-key/

On trouve les informations suivantes :
Citation:
Envoyé par rouardg Voir le message
Bonjour,

2 choses :
1 ) dans la table STAGIAIRE, il faut créer les colonnes CODESIRET et NOMCYCLE,
2 ) il manque le mot-clé CONSTRAINT dans la définition des FK.

La syntaxe est :

Code :
1
2
3
4
5
6
7
8
9
10
CREATE TABLE STAGIAIRE 
( 
   codeStagiaire VARCHAR(7) PRIMARY KEY, 
   nomStagiaire VARCHAR2(30) NOT NULL, 
   statutStagiaire NUMBER(1) NOT NULL,
   codeSIRET VARCHAR2(14),
   nomCycle VARCHAR2(30),
   constraint FK_ENTREPRISE FOREIGN KEY (codeSIRET) REFERENCES ENTREPRISE (codeSIRET), 
   constraint FK_CYCLE FOREIGN KEY (nomCycle) REFERENCES CYCLE (nomCycle)
);
Dans ce cas, quand on manipule la table STAGIAIRE, on appelle "FK_ENTREPRISE" ou "codeSIRET" ?

Merci.
seanbean est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 21h47   #2
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Si j'ai bien compris ta question, dans les requêtes tu utilises uniquement des noms de colonne donc codeSIRET.
En cas de violation de contrainte le nom de la FK violée sera renvoyé, et ce sera FK_ENTREPRISE.
Et tu peux retrouver à quoi correspond la contrainte en intérogeant les vues ALL_CONSTRAINTS et ALL_CONS_COLUMNS
Exemple avec le schema Scott :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SELECT e.ename,d.dname
FROM scott.emp e
JOIN scott.dept d ON d.deptno = e.deptno;
 
ENAME      DNAME
---------- --------------
CLARK      ACCOUNTING
KING       ACCOUNTING
MILLER     ACCOUNTING
JONES      RESEARCH
FORD       RESEARCH
ADAMS      RESEARCH
SMITH      RESEARCH
SCOTT      RESEARCH
WARD       SALES
TURNER     SALES
ALLEN      SALES
JAMES      SALES
BLAKE      SALES
MARTIN     SALES
 
14 rows selected.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
> SELECT * FROM scott.dept;
 
    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON
 
 
> UPDATE scott.emp SET deptno = 50;
UPDATE scott.emp SET deptno = 50
*
ERROR at line 1:
ORA-02291: integrity constraint (SCOTT.FK_DEPTNO) violated - parent KEY NOT found
Et on retrove les informations sur la contrainte en interogeant les vues précédentes :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
> SELECT OWNER,CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME
FROM all_constraints
WHERE CONSTRAINT_NAME = 'FK_DEPTNO';
 
OWNER		CONSTRAINT_NAME                C TABLE_NAME
------------------------------ - ------------------------------
SCOTT		FK_DEPTNO                      R EMP
 
> SELECT OWNER,CONSTRAINT_NAME,TABLE_NAME,COLUMN_NAME FROM ALL_CONS_COLUMNS WHERE CONSTRAINT_NAME = 'FK_DEPTNO';
 
OWNER            CONSTRAINT_NAME   TABLE_NAME      COLUMN_NAME
--------------- ------------------ --------------- -----------------
SCOTT             FK_DEPTNO        EMP		   DEPTNO
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/12/2010, 17h40   #3
Membre du Club
 
bean sean
Inscription : avril 2010
Messages : 120
Détails du profil
Informations personnelles :
Nom : bean sean
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : avril 2010
Messages : 120
Points : 46
Points : 46
Merci pour avoir répondu d'une façon détaillée.
A vrai dire, je ne savais meme pas cela
seanbean est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h05.


 
 
 
 
Partenaires

Hébergement Web