带外键的NULL值

时间:2013-05-13 13:05:52

标签: php mysql

我在php中有2个表单用于添加供应商和客户。在这些表格上,我可以添加供应商或客户的联系方式。现在,由于1个供应商或1个客户可以有多个联系人,我在桌面联系上制作了外键。但问题是我有一个联系表,结构如下:

ID  |  telefon  |  name  |  mail  |  type_fk  | supplier_fk_id  |  customer_id_fk
------------------------------------------------------------------------------
1   |  123      | john   | mail   |     1     |       23        |      NULL
2   |  123234   | julie  | gfdh   |     3     |       NULL      |      45

所以基本上,我希望将它存储在一个表中,而现在我不确定这是不是一个好主意。因为当我添加客户联系人时,我在supplier_fk_id中有NULL值,并且对于供应商而言,但在customer_fk_id中也是如此。我有更新和删除时的外键 - 级联,因为我希望删除客户/供应商时删除这些联系人。如果我删除数据库中的外键,我将没有数据库端检查我想要的。但我得到这样的错误:

Error   
Error inserting:
Cannot add or update a child row: a foreign key constraint fails 
(`testbase`.`pro_contact`, CONSTRAINT `supplier_fk_id` FOREIGN KEY (`supplier_fk_id`) 
REFERENCES `pro_supplier` (`supplier_id`) ON DELETE CASCADE ON UPDATE CASCADE)

任何建议都将不胜感激......

1 个答案:

答案 0 :(得分:0)

我认为ON DELETE SET NULLSUPPLIER/CONTACTS使用ON DELETE CASCADE  根据您的决定CUSTOMER/CONTACTS {{1}}或反之亦然