2016-01-19 275 views
0

我正在研究一点支持(票证)系统。我的表是门票和ticket_replies。mysql外键“权限”删除

票表的设计是

id|user_id|title|... 

ticket_replies的设计看起来像:

id|ticket_id|... 

外键我说看起来像这样:

ALTER TABLE `ticket_replies` ADDFOREIGN KEY (`ticket_id`) 
REFERENCES `sampleauth`.`tickets`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; 

现在,当我删除“ticket”表中的“ticket”也会在“ticket_replies”中被删除。换句话说,这不起作用,总而言之,我希望这种方式也能以另一种方式工作,所以我的数据库始终保持一致。如何做?

+0

这不能跟你必须添加触发器或东西,使用 – Batbayar

+0

复式外键不会做外键来完成解决这个问题对吗? –

+0

是的,我认为使用触发器是你的最佳选择。 – Batbayar

回答

0

添加此触发器会删除其主键,当您尝试删除外键

CREATE TRIGGER `ticket_replies_BEFORE_DELETE` BEFORE DELETE ON `ticket_replies` FOR EACH ROW 
BEGIN 
    DELETE FROM tickets WHERE id = OLD.ticket_id; 
END