SqlServer使用MySql创建表,如auto_increment主键

Ald*_*dur 11 mysql sql-server auto-increment

我想在SqlServer中创建一个表,它将在插入时添加一个自动递增的主键.这应该是一个类似于MySql auto_increment功能的自动增量id.(下面)

create table foo  
(  
user_id int not null auto_increment,  
name varchar(50)  
)  
Run Code Online (Sandbox Code Playgroud)

有没有办法在创建插入触发器的情况下执行此操作?

SQL*_*ace 21

像这样

create table foo  
(  
user_id int not null identity,  
name varchar(50)  
)
Run Code Online (Sandbox Code Playgroud)


Amy*_*y B 9

OP请求自动递增的主键.IDENTITY关键字本身不会使列成为主键.

CREATE TABLE user
(
  TheKey int IDENTITY(1,1) PRIMARY KEY,
  Name varchar(50)
)
Run Code Online (Sandbox Code Playgroud)


HLG*_*GEM 9

他们已经回答了你的问题,但我想为新用户使用标识列添加一些建议.有时您必须返回刚刚插入的标识的值,以便您可以插入到相关的表中.许多消息来源会告诉您使用@@ identity来获取此值.如果您想保持数据完整性,在任何情况下都不应该使用@@ identity.如果添加其中一个插入到另一个表,它将给出在触发器中创建的标识.由于您无法保证@@ identity的值始终是正确的,因此最好永远不要使用@@ identity.使用scope_identity()来获取此值.我知道这有点偏离主题,但对于理解如何在SQL Server中使用标识非常重要.相信我,你不想修复有错误身份价值的相关记录的问题.这可能会在发现之前几个月悄然出错,之后几乎无法修复数据.