2012-06-14 197 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