MySQL 如果一对一关系级联删除

MySQL Cascade delete if one-to-one relationship

想象一个存储书名和作者的数据库。当我删除书名时,我也想删除作者 - 但前提是他们没有其他与之关联的书名。

有办法吗?

或者,也许您可​​以推荐我如何以不同的方式构建我的表来解决这个问题。这是我负责数据建模的应用程序的简化示例;也许通过问上面的问题,我清楚地知道我的数据结构很差。

这是 "chicken and egg" 数据建模场景之一,例如部门需要员工,部门经理是部门的员工。通常,您会认为作者是 "parent",因为它可以有很多书,而书必须是作者;但是如果没有他们自己创作的书,他们就不是作者。

所以这并不是一个糟糕的结构,而是你所代表的关系的复杂化。 CASCADE 不适合你;但是您可以在 "books" table 上使用 AFTER DELETE 触发器来检查已删除图书的作者是否还有剩余的图书,如果没有则将其删除。