我想在SqlServer中创建一个表,在插入时添加一个自动递增的主键。这应该是一个类似于MySql auto_increment功能的自动增量id。 (下)
create table foo
(
user_id int not null auto_increment,
name varchar(50)
)
有没有办法在不创建插入触发器的情况下执行此操作?
答案 0 :(得分:21)
喜欢这个
create table foo
(
user_id int not null identity,
name varchar(50)
)
答案 1 :(得分:9)
OP请求自动递增的主键。 IDENTITY关键字本身不会使列成为主键。
CREATE TABLE user
(
TheKey int IDENTITY(1,1) PRIMARY KEY,
Name varchar(50)
)
答案 2 :(得分:9)
他们已回答了您的问题,但我想为新用户使用标识列添加一些建议。有时您必须返回刚刚插入的标识的值,以便您可以插入到相关的表中。许多消息来源会告诉您使用@@ identity来获取此值。如果您想保持数据完整性,在任何情况下都不应该使用@@ identity。如果添加其中一个插入到另一个表,它将给出在触发器中创建的标识。由于您无法保证@@ identity的值始终是正确的,因此最好永远不要使用@@ identity。使用scope_identity()来获取此值。我知道这有点偏离主题,但对于理解如何在SQL Server中使用标识非常重要。并且相信我,你不想解决相关记录的问题,这些记录具有错误的身份价值。这可能会在发现之前几个月悄然出错,之后几乎无法修复数据。
答案 3 :(得分:4)
正如其他人所说:将IDENTITY属性添加到列中,并使其成为主键。
然而,MSSQL的IDENTITY与MySQL的AUTO_INCREMENT之间存在差异:
答案 4 :(得分:2)
只需将字段设置为identity field。
答案 5 :(得分:1)
声明该字段为身份
答案 6 :(得分:1)
如上所述,使用IDENTITY字段。
CREATE TABLE foo
(
user_id int IDENTITY(1,1) NOT NULL,
name varchar(50)
)
答案 7 :(得分:0)
正如其他人所说,只需设置身份选项。