Bonjour,
J'ai crée la table TITLE_COPY avec la syntaxe suivante
On voit que la contrainte de clé étrangère est spécifiée simplement en indiquant CONSTRAINT title_copy_title_id_fk REFERENCES title(title_id),
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 CREATE TABLE title_copy (copy_id NUMBER(10), title_id NUMBER(10) CONSTRAINT title_copy_title_id_fk REFERENCES title(title_id), STATUS VARCHAR2(15) CONSTRAINT title_copy_status_nn NOT NULL CONSTRAINT title_copy_status_ck CHECK(status IN('AVAILABLE','DESTROYED','RENTED','RESERVED')), CONSTRAINT title_copy_copy_title_id_pk PRIMARY KEY(copy_id));
et pas CONSTRAINT title_copy_title_id_fk FOREIGN KEY( title_id)REFERENCES title(title_id).
En effet, en utilisant la deuxième façon ( avec FOREIGN KEY) j'obtiens une erreur.
Je remarque que lorsque je crée les contraintes tout à la fin comme dans cet exemple, je n'ai pas de problème( message d'erreur).
Pouvez vous m'expliquer je reçois une erreur lorsque j'utilise la deuxième syntaxe( avec foreign key)sans être à la fin de la création de la table alors que je n'en reçois pas lorsque je crée la contrainte à la fin .
Merci beaucoup à vous.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 CREATE TABLE RESERVATION (reservation_id number(10) NOT NULL , member_id NUMBER(10), title_id NUMBER(10), res_date DATE NOT NULL, CONSTRAINT reservation_title_id_fk FOREIGN KEY(title_id) REFERENCES title(title_id), CONSTRAINT reservation_member_id_fk FOREIGN KEY(member_id) REFERENCES member(member_id), CONSTRAINT res_tit_rdate_mem_id_pk PRIMARY KEY(res_date,member_id,title_id,reservation_id ));
Par ailleurs, si en créant les contraintes de primary key et foreign key je ne nomme pas expressement les contraintes, comment puis je les retrouver pour les supprimer.
J'ai essayé de recupérer leur nom en allant par la commande suivante mais sans succès
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select constraint_name, table_name, constraint_type from user_constraints;
Pour finir, lorsqu'une contrainte est activée , la table correspondante est vérouillée jusqu'à ce que la vérifiçcation soit terminée.
Cela signifie -t-il qu'aucun utilisateur ne peut mettre à jour des données dans la table avant que la verification par la contrainte ne soit effectuée.
Si oui, est ce aussi valable pour la sélection, l'insertion (le verrouillage s'effectue t-il également pendant ces opérations).
Merci beaucoup encore de votre aide.
Cordialement.
Nathalie
Partager