2017-10-01 26 views
0
CREATE TABLE LECTURER 
    (LectID  VARCHAR(12) NOT NULL,  
    Name VARCHAR(30) NOT NULL, 
    Email  VARCHAR(30) NOT NULL, 
    Faculty VARCHAR(20) NOT NULL, 
CONSTRAINT LECTURER_pkey PRIMARY KEY (LectID)); 


CREATE TABLE NOK 
(LectID VARCHAR(12) NOT NULL, 
Name  VARCHAR(30) NOT NULL, 
DOB  DATE   NOT NULL, 
CONSTRAINT NOK_pkey PRIMARY KEY (LectID, Name, DOB), 
CONSTRAINT NOK_fkey FOREIGN KEY (LectID) references LECTURER (LectID)); 

J'ai créé 2 table mysql, Comment puis-je vous assurer, lorsque la ligne de LECTURER tableau est effacé ligne associée de NOK devrait également obtenir supprimé?Supprimer la ligne de table enfant lorsqu'une ligne de table parent est supprimé

Répondre

2

Vous devez utiliser ON DELETE CASCADE dans le tableau NOK.

changement

CONSTRAINT NOK_fkey FOREIGN KEY (LectID) references LECTURER (LectID) 

à

CONSTRAINT NOK_fkey FOREIGN KEY (LectID) references LECTURER (LectID) 
ON DELETE CASCADE 

Edité ==

Avant l'exécution du script ci-dessus, vous devez exécuter ci-dessous, de sorte que vous n'obtiendrez aucune erreur.

ALTER TABLE NOK DROP FOREIGN KEY NOK_fkey; 
+0

, mais on m'a demandé de le faire en utilisant alter table .. donc je viens de modifier le tableau des références ADD CONTRAINTE NOK_fkey FOREIGN KEY (LectID) LECTURER (LectID) ON SUPPRIMER CASCADE est-il? – sozai

+0

@sozai Si vous avez déjà créé une contrainte, vous devez d'abord la supprimer. Et oui, vous pouvez le faire. – Ravi

+0

@sozai ok, avez-vous essayé d'exécuter le script alter? – Ravi