2015-05-09 93 views
0

查询创建表:重复条目在MySQL的关键 “主”

create table if not exists person ( 
roll_no int(4) AUTO_INCREMENT primary key, 
name varchar(25), 
city varchar(25)); 

查询设置起始号码自动递增的主键:

alter table person auto_increment = 1;

查询插入数据:

insert into person (name,city) values("Maxwell", "Pune"); 
insert into person (name,city) values("Baldwin", "Bengaluru"); 
insert into person (name,city) values("Novartis", "Paris"); 
insert into person (name,city) values("Shaun", "Mumbai"); 
insert into person (name,city) values("Beckham", "Toronto"); 
insert into person (name,city) values("Ashish", "Bengaluru"); 
insert into person (name,city) values("David", "Paris"); 
insert into person (name,city) values("PK", "London"); 
insert into person (name,city) values("Chris", "Bengaluru"); 
insert into person (name,city) values("Aston", "Mumbai"); 

查询删除的行:

delete from person where roll_no=5;

表STR删除一行之后ucture:

roll_no  name  city 
1   Maxwell Pune 
2   Baldwin Bengaluru 
3   Novartis Paris 
4   Shaun  Mumbai 
6   Ashish  Bengaluru 
7   David  Paris 
8   PK   London 
9   Chris  Bengaluru 
10   Aston  Mumbai 

现在,一边寻找恢复已删除的行,编译抛出错误所用Duplicate entry '5' for key 'PRIMARY'

查询重新设置已删除的行。

update person set roll_no = roll_no + 1 where roll_no >=4 order by roll_no desc; 
insert into person (roll_no, name, city) VALUES (5, "Beckham", "Toronto"); 

可能是什么这个问题的可能原因是什么?强烈建议任何输入。

+1

只是删除更新语句.. – amdixon

+1

是什么表的样子后,更新,但其之前插入?看到?真的很简单。 – Strawberry

+0

@amdixon - 美丽......解决了这个问题,但仍然无能为力,为什么更新查询造成了问题?你能解释一下吗? – mindfreak

回答

1

要恢复删除的行,只需执行插入语句。可以简单地删除更新语句,并使用下列内容:

查询

insert into person (roll_no, name, city) VALUES (5, "Beckham", "Toronto"); 
1

这么简单,在你的更新查询中你将4变为5,然后试图插入5.这就是为什么它是重复的。

相关问题