2012-06-14 230 views
0

我有兩張表作爲學生和證書,我需要從學生表中刪除學生時從證書表中刪除與特定學生相關的證書。我不太熟悉mysql觸發器。請協助我。mysql觸發刪除原始

這是我做過嘗試,但我不知道這是正確的

DELIMITER $$ 
CREATE TRIGGER delCerts AFTER DELETE ON students 
FOR EACH ROW 
BEGIN 
DELETE FROM certificates as certs WHERE certs.stCode = students.stCode; 
END; 
$$ 
+0

取代「AFTER DELETE」,寫下「BEFORE DELETE」,讓我們知道 –

回答

2

在InnoDB的數據庫,你可以通過在證書表的外鍵實現它:

idStudent INT NOT NULL, 
FOREIGN KEY (idStudent) REFERENCES Students (id) 
    ON DELETE CASCADE 
    ON UPDATE CASCADE 

當你刪除來自stuends表的學生 - 所有相關證書也將被刪除。我認爲它比觸發更好,因爲如果你或某人會禁用觸發器(意外或有意),你的數據庫將不一致。

+0

這個作品很棒,thanx – Harsha