Сброс назначенных вручную идентификаторов для автоматического увеличения

Я случайно вставил код, который присваивает (произвольно сгенерированные от 0 до 1000000) идентификаторы для новых строк вместо автоматического увеличения. Итак, на данный момент такая ситуация:

ID, Name
1, foo
2, bar
79812, baz
89991, qux

К счастью, прошло совсем немного времени, прежде чем я обнаружил проблему, и мне просто интересно, возможно ли вообще сбросить строки до их потенциальных автоматически увеличивающихся идентификаторов, так что это выглядит так:

ID, Name
1, foo
2, bar
3, baz
4, qux

person eozzy    schedule 31.10.2019    source источник
comment
Нет, в общем случае это невозможно сделать, если только у вас нет столбца, который все время отслеживал исходный порядок. У вас есть такая колонка?   -  person Tim Biegeleisen    schedule 31.10.2019
comment
@TimBiegeleisen Я думаю, можно с уверенностью предположить, что строки с неправильными идентификаторами: 1) при сортировке по возрастанию идентификатора 2) первое число не в последовательности (2 -> 79812) 3) до последнего.   -  person eozzy    schedule 31.10.2019
comment
Если вы уверены, что значения ID всегда увеличиваются (и никогда не возвращаются к меньшим значениям), вы можете использовать ROW_NUMBER() OVER (ORDER BY ID) для создания нужной вам последовательности.   -  person Tim Biegeleisen    schedule 31.10.2019


Ответы (1)


  1. Изменить таблицу - переименовать поле ID и удалить PK

  2. Изменить таблицу - добавить поле ID, сделать его PK и автоматически увеличить

  3. Проверьте данные, убедитесь, что новый идентификатор имеет нужные вам значения

  4. Удалить старое поле ID

person Anatoliy R    schedule 31.10.2019