Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 12402|Отговор: 3

[Източник] Актуализирайте метода на работа на самонарастващата колона ID в базата данни на SQL Server

[Копирай линк]
Публикувано в 23.08.2018 г. 12:20:44 ч. | | | |
В ежедневната разработка на SQL Server, колоната идентичност на типа Идентичност често се използва като самонарастващо число на структурата на таблицата. Например, номер на артикул, сериен номер на записа и т.н. Препратките към саморастящи се идентифицирани колони значително улесняват разработването на бази данни, но понякога този упорит тип полето може да създаде и някои проблеми.

1. Променете стойностите на полетата в идентификационната колона:

Понякога, за да се реализира функция, е необходимо да се модифицира стойността на поле от тип Идентичност, което се развива само, но тази операция по подразбиране не е разрешена поради типа на колоната за идентичност. Например, ако в базата данни са добавени нормално 5 части данни и 2 са изтрити в този момент, ако данните се добавят отново, саморастящата се идентификационна колона автоматично ще получи стойност 6, но ако искате да зададете стойност 3 при вмъкване на данни, това по подразбиране не е разрешено. Ако искаш да промениш стойността на това поле, можеш напълно да контролираш вмъкването на стойността на идентификационното поле, все още има методи, хаха.

ЗАДАЙТЕ IDENTITY_INSERT /[МАСА/] [ВКЛЮЧЕНО| ИЗКЛЮЧЕНО]
Използвайки горното твърдение, лесно можете да контролирате дали саморастяща се колона с идентификатор в таблица автоматично ще расте, тоест дали имате право ръчно да задавате стойността на полето в колоната за идентификатор при вмъкване на запис. Ако е посочено като on, можете да зададете стойността на идентифициращото колона при вмъкване, което не увеличава автоматично зададената стойност. Разбира се, ако го използвате, трябва да използвате това изявление, за да изключите превключвателя към стандартно състояние, иначе полето няма автоматично да увеличи зададената стойност при въвеждане на данни следващия път.

2. Нулиране на стойността на полето в идентификационната колона:

Когато част от записа на данните бъде изтрита и новият запис добавен по-късно, стойността на колоната за идентификация ще има голям интервал на покой, което изглежда много неприятно. Дори ако изтриете всички записи в таблицата, стойността на колоната за идентичност ще продължи да се увеличава автоматично и безкрайно, вместо да расте от нулата. Стойността на seed на саморастящото се поле може да бъде нулирана чрез следното изявление:

DBCC CHECKIDENT(ТАБЛИЦА, [RESEED| NORESEED], [1])
Горното изявление ще принуди стойността на seed на зададената таблица да бъде нулирана на 1. Въпреки това, ако не искате да нулирате семената на 1, можете да замените третия параметър със стойността на seed, която искате да използвате. Ако искате да знаете текущия seed, вместо да нулирате идентифицирания seed, трябва да използвате NORESEED вместо да задавате третия параметър.




Предишен:SQL Server 2012 автоматично увеличава колоните с проблеми с прескока на стойността
Следващ:Windows не успява да стартира услугата Redis, грешка 1067: Процесът приключва неочаквано.
 Хазяин| Публикувано в 23.08.2018 г. 12:57:08 ч. |
1. Когато всички данни в таблицата бъдат изтрити, те автоматично се увеличават до нула. ( таблица за откъсване TableName )

2. Не изтривайте данните от таблицата, а директно нулирайте стойността на авто-растежа. ( DBCC CHECKIDENT ('TableName', RESEED, 0)
 Хазяин| Публикувано в 23.08.2018 г. 13:01:32 ч. |
 Хазяин| Публикувано в 13.02.2019 г. 9:59:15 ч. |
Вижте текущите стойности на самоувеличаващите се колони в таблица:
    DBCC CHECKIDENT (TableName)

Променете текущата стойност на самоувеличаваща се колона в таблица:
    DBCC CHECKIDENT (TableName, RESEED, стойност)
    RESEED не е име на колона, а се пише по фиксиран начин.


Например, ако искам да променя текущата стойност на самоувеличаващата се колона в таблицата Division на 30, мога да използвам следната команда
DBCC CHECKIDENT (Дивизия, RESEED, 30)
Тогава използвайте
DBCC CHECKIDENT (Дивизия)
Виждате, че текущата стойност е 30
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com