Как установить начальное значение для auto_increment в SQL

#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, которую Гордон оставил в своем ответе, должна сделать свое дело