2014-03-05 50 views
0

我有一個包含一些促銷代碼的列表。我有另一個列表,其中包含我希望與促銷代碼鏈接的項目。 對我來說很重要的約束是每個項目都應該鏈接到一個促銷代碼。在項目中生成促銷代碼很容易。我的問題是促銷代碼列表是在項目之前創建的 - 所以我不知道在嘗試保存修改之前是否分配了促銷代碼,在這種情況下它可能會引發異常。我怎樣才能解決我的問題與MySQL?將外鍵鏈接到唯一元素

+0

您有預先生成的促銷代碼池。然後你得到你的物品。那麼將代碼分配給物品有什麼問題?只需逐個完成並將相應的FK值寫入項目表。 –

+0

如果有2個請求,我可能會分配相同的FK兩次 – Marii

+0

然後檢查它。我現在看不到這個問題 –

回答

0

step1:您的promocode表應該有至少2列promo_id,promocode。

第2步:您的商品表應該有一個包含來自promocode表的promo_id的專欄promo_id。

第三步:創建一個基於PROMO_ID外鍵(項目表作爲子表和促銷碼錶作爲主表)

注:這將給錯誤,如果有任何PROMO_ID項表存在和促銷碼不存在表,在這種情況下,您需要先將該promocode插入到promocode表中或需要從項目表中刪除。

第4步:在promocode表中的promocode列上創建唯一索引。

注意:如果有任何重複的promocode,那麼它將不會允許所以首先使唯一。

第5步:在項目表中爲(item_id,promo_id)列創建組合唯一索引。

注意:如果有任何基於這兩列的重複記錄,那麼它將不會允許首先使其唯一。

現在您可以按需要繼續操作。

如果沒有滿足您的要求,請分享更多信息。