外键和n对n关系

时间:2010-11-09 23:29:37

标签: sql foreign-keys

假设我有这些sql表:
    a)预订
    b)客户
    c) borrow_history (book_id,customer_id ......)

我可以从 borrow_history 定义两个引用外键(在删除级联上),引用 book customer ,所以:

  • borrow_history 连接到图书的记录将在删除图书时删除。
  • 客户被删除后,
  • borrow_history 客户相关的记录将被删除。

但是如何以某种方式定义外键,客户将在没有 borrow_history 连接时删除,因此删除 book < / strong>还可以递归删除客户

是否可能,或者我是否必须使用触发器?

1 个答案:

答案 0 :(得分:2)

你必须使用触发器。

无论如何,只有在没有书籍的情况下才能删除用户 - 其他因素如上次活动日期很重要。

我会编写一个脚本(并使用CRON运行)来删除没有任何borrow_history的用户,并且在上一次操作后超过N天。

另一个提示 - borrow_history指向书中的外键应该设置为ON DELETE RESTRICT。如果借书(或借阅),则不应删除