1

我在 php 中有 2 个表单用于添加供应商和客户。在这些表格上,我可以添加供应商或客户的联系方式。现在,我在表联系人上创建了外键,因为 1 个供应商或 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

所以基本上,我希望将它存储在一个表中,现在我不确定这是否是个好主意。因为当我添加客户联系人时,我在供应商_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)

任何意见,将不胜感激...

4

1 回答 1

0

我认为根据您的决定使用ON DELETE SET NULLforSUPPLIER/CONTACTSON DELETE CASCADEforCUSTOMER/CONTACTS或反之亦然

于 2013-05-13T13:47:22.903 回答