2012-02-04 2 views
0

Мне нужно, чтобы вы сохранили мою жизнь. У меня есть таблица с большим количеством строк. Одно из полей - id, у него есть auto_increment.Добавить поле автоинкремента в таблице

По юридическим причинам теперь мне нужно иметь другое поле автоматического приращения (не auto_numeric, я буду контролировать это вручную). Поля в первой строке начинаются с 567.

Как я могу добавить, существует ли в строках новое корреляционное число? 568, 569, 570 ...

+0

Я не совсем уверен в том, что вы ищете, но я бы зацикливал записи через PHP и вручную задал это поле. – ninetwozero

ответ

0

Я нашел решение:

SET @pos = 566; UPDATE mytable SET field_id2 = (SELECT @pos: = @pos +1) ORDER BY id ASC;

0

Вы можете написать хранимую процедуру и использовать CURSOR для достижения того, что вы хотите, используя курсор, вы можете повторять результаты запроса и выполнять определенные операции (в вашем случае оператор UPDATE) для каждой возвращаемой строки.

0

Просто создайте новый Int поле, а затем обновить его

UPDATE table SET new_column = auto_increment_column + 567; 

Конечно, это также будет держать все перерывы в исходной колонке. Вы можете удалить поле auto_increment и повторно добавить его, чтобы устранить его. Похоже, это займет несколько часов, но жизнь стоит того.

Если вам действительно нужно вручную перенумеровать поля, вам, вероятно, просто придется идти так, как предлагали предыдущие комментаторы, и использовать PHP или курсоры для прокрутки всех записей.

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