#sql #sql-server
#sql #sql-сервер
Вопрос:
Я новичок в синтаксисе SQL, поэтому мне интересно, как установить identity(auto_increment)
значение для существующего столбца.
Для MySQL это:
ALTER TABLE users AUTO_INCREMENT = 1001;
Итак, в основном мне нужен эквивалент этой команды для SQL (MS SQL Studio).
Ответ №1:
Когда вы определяете столбец identity, вы можете установить начальное значение и приращение:
create table t (
id int identity(100, 1) primary key,
. . .
);
Чтобы установить его для существующего столбца:
dbcc checkident ('t', reseed, 100);
Комментарии:
1. Чтобы добавить пояснения, упомянутая вами команда dbcc предназначена только для повторного заполнения существующего столбца идентификаторов, но не превращает столбец, не являющийся идентификатором, в столбец идентификаторов. (Вопрос немного расплывчатый, поэтому я не уверен, нужно ли это или нет).
2. @dmoore1181 . . . Это эквивалент команды MySQL.
Ответ №2:
Вам нужно что-то вроде этого:
ALTER TABLE users Add UserId INT NOT NULL IDENTITY(1001, 1)
Кроме того, если это существующий столбец, вам может потребоваться создать новый столбец, как указано выше, без NOT NULL, вставить значения с ИДЕНТИФИКАТОРОМ INSERT, установленным в true, удалить старый столбец, а затем вы можете переименовать новый столбец в старое имя столбца и настроить все индексы, которые могли быть измененытам, поскольку я не верю, что вы можете изменить существующий столбец на столбец идентификаторов.
Комментарии:
1. Столбец создается как id int, А НЕ NULL IDENTITY (1, 1), я просто хочу установить для него значение — например, 1001, поэтому следующим может быть 1002
2. Хорошо, команда DBCC, которую Гордон оставил в своем ответе, должна сделать свое дело