Bar*_*ber 9 mysql sql cascading-deletes
愿有人帮助我.我正在尝试一些东西,但我(也)是(我的)SQL的新手.
我使用两个表:项目和类别.表项具有外键字段:category_id.
我希望表格类别保持整洁.因此,如果项目中的项目不属于类别中的类别X,则应从类别中删除类别X. 你是如何建立的.我通过使用DELETE ON CASCADE猜测,但到目前为止,当我从类别中删除类别时,它只删除了项目中的相应项目.
非常感谢帮助我!
Dan*_*ons 44
ON DELETE CASCADE是一种在删除引用的行时删除行的方法.这意味着:
所以你有物品,每个物品都属于一个特定的类别.在您的项目表中,您有一个category_id(请修改您的拼写),该类别引用类别表中的一行.所以,在你的情况下:
你要求的是另一种方式:
ON DELETE CASCADE由于两个原因,没有办法做到这一点:
这一切都源于这一事实,ON DELETE CASCADE即保持参照完整性的一种方式.也就是说,这是数据库为您提供强有力保证的一种方式,如果您在项目#9847上看到类别#20393,当您去寻找类别#20393时,您知道它存在.它不是省力的设备.:)这就是为什么其他选项是ON DELETE SET NULL和ON DELETE RESTRICT:它们也保证完整性,但它们不是删除,而是删除不良引用或阻止原始删除发生.
所以答案是,如果您担心空类别,则必须编写一个cron作业来定期清理该表或使用某种ON DELETE触发器.
| 归档时间: |
|
| 查看次数: |
5043 次 |
| 最近记录: |