Есть ли способ сбросить столбец IDENTIY на сервере SQL? и будет ли это причиной не использовать столбец идентификации? - PullRequest
0 голосов
/ 20 апреля 2009

У меня есть база данных разработки, в которой есть сборы. У этого есть feeid, который является уникальным ключом, который является идентификатором. Проблема, с которой я сталкиваюсь, заключается в том, что при установке обновления таблицы на рабочий сервер может не совпадать сумма пошлины / платы. Это, очевидно, может привести к некоторым плохим вещам, таким как перезарядка или недозарядка. Есть ли способ сопоставления сброса идентификаторов на сервере SQL или их сопоставления, или это пример того, когда вы не хотите их использовать?

Ответы [ 3 ]

3 голосов
/ 20 апреля 2009
  1. Не делайте ваши первичные ключи "значить что-то", кроме выявление уникальной записи. если ты нужно где-то жестко кодировать идентификатор, создать еще один столбец для него. Так называемые «натуральные ключи» более Беда, чем они стоят
  2. Если, по какой-то причине вы решили, что либо вы не будете или не можете следовать первое правило, не используйте никаких автоматически сгенерированные значения ключа.
1 голос
/ 20 апреля 2009

Это поведение столбца идентификаторов, это также делает его таким быстрым, потому что он не блокирует таблицу

для сброса идентичности либо используйте DBCC CHECKIDENT, либо TRUNCATE TABLE

для вставки идентификаторов из одной таблицы в другую и сохранения тех же значений, что вам нужно сделать

SET IDENTITIY_INSERT ON

--upddate/insert rows

SET IDENTITIY_INSERT OFF

имейте в виду, что в течение промежутка времени между двумя утверждениями SET IDENTITIY_INSERT ваши обычные вставки не будут выполняться!

0 голосов
/ 20 апреля 2009

Вы можете включить IDENTITIY INSERT, обновить идентификаторы (убедитесь, что нет конфликтов), а затем отключить его.

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