Преобразовать идентификатор строки столбца в int автоинкремент - PullRequest
0 голосов
/ 07 октября 2010

У меня есть стол Автомобили

Id nvarchar(25) PK
Name nvarchar(max)

И есть некоторые записи.

Id      Name
CodeXYZ Namezxc
CodeQAZ Nameasd
CodeEDC Nameqwe

Я хочу преобразовать столбец Id в int с автоинкрементом:

Id      Name
1 Namezxc
2 Nameasd
3 Nameqwe

но я понятия не имею, как это сделать: / Не могли бы вы помочь мне?

Ответы [ 3 ]

1 голос
/ 07 октября 2010

В SQL Server Management Studio вы можете щелкнуть правой кнопкой мыши таблицу и изменить ее.

В этом месте выберите столбец, который вы хотите автоматически увеличить.Вы должны иметь возможность изменить его на INT.

Затем посмотрите на свойства столбца;Одним из них является IDENTITY, которое является уникальным и автоинкрементным полем.Включив это свойство и сохранив изменения, вы получите то, что хотите.

Если в этом поле есть дубликаты или значения, которые нельзя преобразовать в INT, произойдет сбой.Сначала вам нужно будет выполнить ОБНОВЛЕНИЕ таблицы, чтобы избавиться от проблем или дубликатов.

РЕДАКТИРОВАТЬ:

Вы сделали комментарий "все записи являются строками».Если строковые значения не приводятся к INT, у вас не может быть того, о чем вы просите.Поле, похожее на «AAABC», не может быть автоматически увеличено.

1 голос
/ 07 октября 2010

Создайте новую таблицу (TBLB), которая соответствует структуре таблицы первой таблицы (TBLA), за исключением создания второй таблицы со столбцом вставки идентификатора int для столбца идентификатора.

Затем

INSERT INTO TBLB (Имя) SELECT Name FROM TBLA

Убедитесь, что вы сопоставляете столбцы, чтобы не выбирать и не вставлять столбец Id.

Затем можно удалить исходную таблицуи переименуйте новую таблицу.

Это немного больно, но вы должны получить то, что хотите.Вы даже можете добавить столбец в TBLB, чтобы сохранить исходный идентификатор в новом столбце.

0 голосов
/ 10 января 2017

Я не знаю, возможно ли это с SQL Server, но с MySQL вы можете использовать:

SET @tempVariable := 0;
UPDATE block SET id = (@tempVariable:=@tempVariable+1);

Идея состоит в том, чтобы инициировать переменную, которая увеличивается каждый раз с помощью UPDATE.

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