2017-09-22 84 views
0

嗨當​​我連接表我已經使用創建以下文件:避免重複數據庫中插入新行

CREATE TABLE user_group_join (

    user_group_join_id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT, 
    user_join_id int(11) NOT NULL, 
    group_join_id int(11) NOT NULL, 
    FOREIGN KEY (user_join_id) REFERENCES users (user_id), 
    FOREIGN KEY (group_join_id) REFERENCES user_group (group_id) 

); 

然後我有另一個表:

CREATE TABLE user_flat(

    user_flat_id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT, 
    user_flat_user_id INT(11) NOT NULL, 
    user_flat_group_id INT(11) NOT NULL, 
    user_flat_location varchar(250) NOT NULL, 

    FOREIGN KEY (user_flat_user_id) REFERENCES users (user_id), 
    FOREIGN KEY (user_flat_group_id) REFERENCES user_group (group_id) 

); 

的user_join_group是管理用戶權限,現在每次我更新某個特定用戶的單位時,我還需要使用一些唯一值更新user_group_join表,例如,如果我具有以下值:

user_join_id | group_join_id 
      75 | 12 
      75 | 13 
      75 | 14 

如果我要值12 group_join_id改爲13我應該只:

user_join_id | group_join_id 
       75 | 13 
       75 | 14 

我試圖刪除的行,然後插入一個新的,但問題是:

如果我的用戶身份證號碼爲75,例如在組13中有兩個單位,在組14中有一個單位,如果我更改了兩個類似單位中值爲12的組中的一個,數據庫值將爲:

user_join_id | group_join_id 
      75 | 12 
      75 | 14 

當我真正想有回:

user_join_id | group_join_id 
      75 | 12 
      75 | 13 
      75 | 14 

我希望是不是混亂,有人能幫助我。非常感謝

回答

0

我不確定如果我理解正確,那麼糾正我,如果我不是。

如果用戶可以有相同ID的多個單位,你應該設計自己的數據庫,如下所示:

user_join_id | group_join_id | count 
      75 | 12   | 1 
      75 | 13   | 2 
      75 | 14   | 1 

然後,在你的查詢,你只需要減少計數變量,或者刪除的行它減少到0.