OriginalGriff
Из вашего описания следует, что вы используете столбец идентификаторов - это ожидаемое поведение, и это на самом деле то, что вы хотите, чтобы произошло. Проблема в том, что вы предполагаете, что ir представляет собой систему нумерации строк, когда вместо этого он представляет уникальное значение идентификатора для каждой строки.
База данных не "перерабатывает" значения идентификаторов, потому что она не "знает", для чего вы их используете, - поэтому она предполагает, что вы ссылаетесь на эти значения из других мест и других данных. Если он переработает их, то старые данные будут эффективно прикреплены к новым строкам,и это может быть очень плохо. Представьте себе систему выставления счетов, в которой покупки для другого, удаленного клиента привязываются к вашему новому клиенту, и с вас за них взимается плата!
В то время как можно сбросить поле идентификации:
DBCC CHECKIDENT('mYTable', RESEED, 1)
Вообще-то это плохая идея.
Поэтому не используйте его как номер строки: вместо этого используйте ROW_NUMBER:
SELECT ROW_NUMBER() OVER (ORDER BY ID ASC) AS RowNumber, ID, QuestionText FROM MyTable
akinwunmi
Спасибо, это означает, что я должен создать столбец для идентификатора, но что делать, если пользователь ошибочно вводит тот же идентификатор?
OriginalGriff
Пользователь не вводит идентификатор, вся идея столбца идентификаторов заключается в том, что он поддерживается базой данных для обеспечения его уникальности. Вы сказали своему банку, каким должен быть номер вашего счета, когда вы открываете свой банковский счет? Конечно, нет! Банк выделил один, когда вы подписывали формы, и отправил вам эту информацию позже вместе с банковской картой, чековой книжкой, приветственным пакетом или чем-то еще. Пользователи указывают идентификатор только тогда, когда они его знают, и это после того, как он был создан системой.
akinwunmi
Выберите функции row_number() над (приказ по ID по возрастанию), как функция rownumber, удостоверение личности, QuestionText из mytable
пожалуйста, куда я собираюсь вставить этот код