2017-09-22 83 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.