2012-12-06 44 views
1

我不知道如何在標題解釋這一點,但我已經是這樣的一個表:MySQL的插入(條件)獨特的價值每一次用戶

user_id   | subscription_id 
6     12 
6     10 
12     6 
4     12 

每個用戶都可以訂閱其他用戶,但有可能阻止用戶通過INSERT查詢兩次訂閱另一個用戶?

由於我subscription_id不是唯一的,出現這種情況:

user_id   | subscription_id 
6     12 
6     12 

我想避免這種情況。據我所知INSERT IGNORE,INSERT UPDATE和ON DUPLICATE只適用於唯一鍵。

+0

它們實際上在唯一鍵和主鍵上工作;不確定觸發器。底線,跨越主鍵:) –

回答

0

的唯一可靠和簡單的方法,以確保一個元組不能出現超過一次單個表裏面有兩種情況:

  1. 使用生成樹唯一鍵

  2. 使用跨越式主鍵

  3. 也許觸發器

前兩個大致相同,但唯一鍵將空值視爲不同,以至於可能無法爲您工作。

ALTER TABLE user_subscriptions ADD PRIMARY(user_id, subscription_id);