ankit.agg1984 Ответов: 2

Как обновить значение столбца identity в SQL SERVER?


Привет,

Как обновить значение столбца identity в SQL SERVER?
Я использую этот запрос для обновления значения столбца идентификатора в sql server.

set IDENTITY_INSERT tableSalesQuotation ON
update tableSalesQuotation
set
SNO=SubQuery.SNO
from
(SELECT Row_Number() OVER (ORDER BY SNO) as SNO
FROM tableSalesQuotation
) SubQuery
set IDENTITY_INSERT tableSalesQuotation OFF


но это становится ошибкой.
Не удается обновить столбец идентификаторов "SNO"

Я должен обновить существующее значение столбца идентификатора, это потребность приложения.

пожалуйста, помогите мне.

заранее спасибо.

Анкит Агарвал
инженер-программист

2 Ответов

Рейтинг:
20

OriginalGriff

Это очень, очень плохая идея.
Вся идея поля идентичности заключается в том, что значение уникальный- нет , это не так последовательный - это означает, что при добавлении и удалении строк значения не используются повторно, а вместо них появляются "дыры". Если вы обновите их, чтобы дать последовательные значения, то через 30 секунд снова могут появиться дыры!

Это также опасно; если у вас есть другие таблицы, которые ссылаются на это значение, вы вполне можете разрушить целостность своих данных, сделав это. И... Что делать, если у вас есть несколько пользователей? Когда такие данные обновляются, это может вызвать некоторые ужасные проблемы...

Пожалуйста, не делай этого. Если вам нужны последовательные номера, то используйте ROW_NUMBER, чтобы предоставить его, но не обновляйте значение IDENTITY, чтобы дать последовательные результаты - это серьезно не то, для чего оно существует.

Если вы все еще думаете, что действительно должны это сделать, то простой Google найдет вам, как это сделать... Но серьезно, если вам придется, то есть проблема с вашим дизайном!


[no name]

Это моя заявочная потребность.

Jörgen Andersson

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

[no name]

Мне нужно обновить колонку.

[no name]

У меня нет никакого выбора для решения моей проблемы.

[no name]

Пожалуйста, помогите мне.

[no name]

Я не имеют каких-либо опций.

Рейтинг:
1

Member 14600529

Если нет зависимости между значением идентификатора вашей таблицы и другими таблицами, вы можете легко изменить новое вставляемое значение с помощью этого кода:
DBCC CHECKIDENT ( [YourTabl], RESEED ,[новое желаемое новое значение])

Кроме того, если вам нужно устранить пробелы в ваших личных ценностях, вы можете
1 преобразуйте поле identity в целое число
2 отредактируйте значения поля identity (теперь это целое число), используя инкрементные строки forn instance excel)
3 убедитесь, что нет повторяющихся значений
4 снова преобразуйте столбец в поле идентификации

Надеюсь, это поможет
Рамон Байгес