我在mysql中的两个表之间有一对多的关系。
一个名为类型,主要为url
url
varchar(255)
其中一个名为 order ,其中包含url上的索引。
url | id_no
varchar(255) | int
订单表中可以包含多个值,并且已设置外键,以便在表类型中删除url
时它会删除与顺序匹配url
的所有关联键。
也可以手动删除订单,这意味着类型中可能存在与{strong>订单没有关系的url
。
有没有办法设置外键,以便如果类型中的url
与表格订单没有关系,那么它将会从类型?
查看mysql手册我无法弄明白,我对CASCADE
感到困惑,因为它会删除所有相关的键,但我只想删除表中的url
类型当且仅当两者之间没有关系时?
感谢您的帮助!
答案 0 :(得分:1)
您可以使用DELETE
表上的order
触发器轻松执行此操作:如果存在具有相同网址的其他行,则检查,如果不是从type
删除它
另一种方法是创建类似于
的维护脚本DELETE FROM `type` WHERE url NOT IN (
SELECT DISTINCT `url` FROM `order`
)
并定期或按需运行。