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

基本的には、それを 1 つのテーブルに格納したいのですが、今のところ、それが良いアイデアだったかどうかはわかりません。顧客の連絡先を追加すると、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)

アドバイスをいただければ幸いです...

4

1 に答える 1

0

あなたの決定に基づいて、またはその逆に使用ON DELETE SET NULLするSUPPLIER/CONTACTSと 思いますON DELETE CASCADECUSTOMER/CONTACTS

于 2013-05-13T13:47:22.903 に答える