SqlServer создает таблицу с MySql, как первичный ключ auto_increment

Я хочу создать таблицу в SqlServer, которая добавит в insert, автоматически увеличивающийся первичный ключ. Это должен быть идентификатор с автоинкрементами, похожий на функциональность MySql auto_increment. (Ниже)

create table foo  
(  
user_id int not null auto_increment,  
name varchar(50)  
)  

Есть ли способ сделать это без создания триггера вставки?

Ответ 1

Подобно этому

create table foo  
(  
user_id int not null identity,  
name varchar(50)  
)

Ответ 2

OP запросил первичный ключ с автоматическим добавлением. Ключевое слово IDENTITY само по себе не превращает столбец в первичный ключ.

CREATE TABLE user
(
  TheKey int IDENTITY(1,1) PRIMARY KEY,
  Name varchar(50)
)

Ответ 3

Они ответили на ваш вопрос, но я хочу добавить один совет для кого-то нового для использования столбцов идентификации. Бывают случаи, когда вам нужно вернуть значение только что вставленной личности, чтобы вы могли вставить ее в связанную таблицу. Многие источники расскажут вам использовать идентификатор @@, чтобы получить это значение. Ни при каких обстоятельствах вы никогда не будете использовать идентификатор @@, если хотите сохранить целостность данных. Это даст идентификатор, созданный в триггере, если один из них добавлен для вставки в другую таблицу. Поскольку вы не можете гарантировать, что значение идентификатора @@всегда будет правильным, лучше никогда не использовать @@identity. Используйте scope_identity(), чтобы получить это значение. Я знаю, что это немного не по теме, но важно понимать, как использовать личность с SQL Server. И поверьте мне, вы не хотели исправлять проблему связанных записей, имеющих неправильное значение идентификации, поданное им. Это то, что может заблудиться в течение нескольких месяцев до того, как оно будет изучено, и почти невозможно зафиксировать данные после этого.

Ответ 4

Как уже упоминалось, добавьте атрибут IDENTITY в столбец и сделайте его первичным.

Существуют, однако, различия между MSSQL IDENTITY и MySQL AUTO_INCREMENT:

  • MySQL требует, чтобы ограничение (часто в форме первичный ключ) для AUTO_INCREMENT.
    MSSQL не имеет такого требования.
  • MySQL позволяет вручную вставлять значения в столбец AUTO_INCREMENT.
    MSSQL не позволяет вручную вставлять значение в IDENTITY колонка; если необходимо, вы можете переопределить это путем выдачи "SET IDENTITY_INSERT tablename ON " перед вставкой.
  • MySQL позволяет обновлять значения в столбце AUTO_INCREMENT.
    MSSQL отказывается обновлять значения в IDENTITY.

Ответ 6

объявить поле идентификатором

Ответ 7

Как указано выше, используйте поле IDENTITY.

CREATE TABLE foo
(
user_id int IDENTITY(1,1) NOT NULL,
name varchar(50)
)

Ответ 8

Как говорили другие, просто установите параметр Identity.