2015-11-24 28 views
0

我幾乎是全新的mysql。我發現很難理解的東西,希望有人能夠啓發我。我有一個「product_id」作爲主鍵的父表,在創建另一個名爲「supplier_info」的表後,我在表中使用了product_id作爲外鍵,並將其限制到目前爲止。然後我創建了一個名爲「cost_info」的新表,並且希望將product_id用作此表的外鍵,並且工作正常。但是,如果我想在這張表中作出約束,並且它給了我1022錯誤不能重複鍵? 我有點失落,錯誤是如何相關的,爲什麼只能被約束一次?mysql 1022錯誤重複鍵

+0

究竟是什麼發生故障的約束? cost_info表中的product_ID的唯一約束?桌子是否也包含供應商並且供應商能否提供相同的產品?您可能需要一個由多個列組成的Composite約束來生成「UNIQUE」索引。顯示導致錯誤的代碼以及應用它的表結構。 – xQbert

+0

CREATE TABLE cost_id(cost_id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,product_id INT NOT NULL,CONSTRAINT list_product_id_fk FOREIGN KEY(product_id)REFERENCES list(product_id)); –

+0

我現在正在使用手機。所以,如果我現在有一個父表,稱爲列表和兩個表,使用PK(product_id)作爲外鍵,但不是作爲其他兩個表中的主鍵,那麼他們需要複合? –

回答

0

您需要將product_id設置爲主鍵。

**

因爲如果你想引用一個列從 外鍵的主鍵,該列必須是唯一的。

**