2015-05-09 2 views
0

Query для создания таблицы:Дублировать запись на ключ "PRIMARY" в 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;

Таблица ул 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

Что таблица выглядеть после обновления, но ДО INSERT? Видеть? Совсем просто. – Strawberry

+0

@amdixon - Прекрасно ... это решило проблему, однако все еще неясно, почему запрос обновления создает проблему? Не могли бы вы немного объяснить? – mindfreak

ответ

1

Для восстановления удаленной строки необходимо выполнить оператор insert. Можно просто удалить оператор обновления и использовать следующее:

запрос

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

Так просто, в вашем запросе на обновление вы делаете 4, а затем пытаетесь вставить 5. Вот почему его дубликат.

Смежные вопросы