【问题标题】:mysql foreign key "permissions" on deletemysql外键“权限”删除
【发布时间】:2016-01-19 17:15:25
【问题描述】:

我正在开发一个小支持(票务)系统。我的表是tickets 和ticket_replies。

门票表的设计是

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”中被删除。另一种方式是行不通的,总而言之,我希望它也能以另一种方式工作,所以我的数据库始终保持一致性。该怎么做?

【问题讨论】:

  • 这不能用外键来完成,你必须添加触发器或其他东西来做到这一点
  • 使用多个外键不能解决这个问题吧?
  • 是的,不会,我认为使用触发器是您的最佳选择。

标签: mysql foreign-keys foreign-key-relationship


【解决方案1】:

添加此触发器将在您尝试删除外键时删除其主键

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

【讨论】:

    猜你喜欢
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    • 2020-10-23
    • 2021-07-24
    • 2010-10-24
    • 2012-01-10
    • 2015-02-22
    相关资源
    最近更新 更多