Как изменить значения столбцов идентификационных данных программно?

Каждая ссылка (дорога) представлена ​​в виде ломаной линии между двумя узлами в данных карты Здесь. Эта ломаная содержит одну или несколько точек формы, которые представляют форму ссылки. Данные представлены в виде разных слоев на карте (для удобства хранения). Данные слоя топологии дороги содержат базовые данные карты, такие как ссылки и информация об узлах (вместе с точками формы). Точки формы - это точки на ссылке, которые вводятся всякий раз, когда происходит изменение в геометрии дороги и т. Д. В дополнение к точкам формы, присутствующим в слое топологии дороги, слой ADAS мог бы ввести еще несколько точек формы в той же ссылке для представления информации ADAS. (например: изменение высоты дороги, кривизна и т. д.). VERTICAL_FLAGS представляет, присутствуют ли точки формы, найденные для ссылки в атрибуте ADAS, в сегменте топологии или нет.

Вы можете прочитать полный список атрибутов ADAS, доступных здесь https://tcs.ext.here.com/pde/layer?region=WEU&release=18150&url_root=pde.api .here.com & layer = ADAS_ATTRIB_FC1 (войдите с помощью учетных данных Here). Надеюсь, это поможет!

160
задан Muhammad Waheed 5 March 2019 в 07:40
поделиться

6 ответов

Вам необходимо

set identity_insert YourTable ON

Затем удалить вашу строку и повторно вставить ее с другим идентификатором.

После того, как вы закончите вставку, не забудьте выключить identity_insert

set identity_insert YourTable OFF
220
ответ дан 23 November 2019 в 21:30
поделиться

Изменение идентификатора может завершиться неудачей в зависимости от ряда факторов, в основном вращающихся вокруг объектов / отношений, связанных со столбцом id. Похоже, что дизайн БД так же важен, как и ID, если они вообще меняются, редко, если они меняются (я уверен, что у вас есть свои причины и вы делаете изменения). Если вам действительно нужно время от времени менять идентификаторы, я бы предложил создать новый столбец фиктивных идентификаторов, который не является первичным ключом / автономным номером, которым вы можете управлять самостоятельно и генерировать из текущих значений. С другой стороны, идея Кристоферса, приведенная выше, была бы моим другим предложением, если у вас возникли проблемы с разрешением вставки идентификатора.

Удачи

PS Это не сбой, потому что последовательный порядок это ' s работает в пытается обновить значение в списке на элемент, который уже существует в списке идентификаторов? хватаясь за соломинку, возможно, добавьте количество строк + 1, а затем, если это сработает, вычтите количество строк: -S

1
ответ дан Tanner 23 November 2019 в 21:30
поделиться

С помощью пользовательского интерфейса в диспетчере SQL Server 2005 измените столбец, удалите свойство столбца autonumber (identity) (выберите таблицу, щелкнув по ней правой кнопкой мыши и выберите «Дизайн»).

Затем выполните свой запрос:

UPDATE table SET Id = Id + 1

Затем перейдите и добавьте свойство autonumber обратно в столбец.

26
ответ дан Alex 23 November 2019 в 21:30
поделиться

Если столбец не является PK, вы всегда можете создать новый столбец в таблице с увеличенными числами, отбросьте оригинал, а затем изменить новый, чтобы он был старым.

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

удачи!

4
ответ дан Christopher Klein 23 November 2019 в 21:30
поделиться

Во-первых, настройка IDENTITY_INSERT в этом случае не будет работать для того, что вам нужно (она используется для вставки новые значения, такие как пробелы в пробках).

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

18
ответ дан Miles D 23 November 2019 в 21:30
поделиться

Если вам нужно время от времени изменять идентификаторы, вероятно, лучше не использовать столбец идентификаторов. В прошлом мы реализовали поля автонумерации вручную, используя таблицу «Счетчики», которая отслеживает следующий идентификатор для каждой таблицы. IIRC мы сделали это, потому что столбцы идентификаторов вызывали повреждение базы данных в SQL2000, но возможность изменения идентификаторов иногда была полезна для тестирования.

1
ответ дан 23 November 2019 в 21:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: