技术探索

如何在 Sql Server 中添加数据时明确指定自增字段的值

2014-09-14
586

如何在 Sql Server 中添加数据时显示指定自增字段的值?

 

例表:

create table [dbo].[t_user](
    [userid] int identity(1,1) unique not null,
    [username] nvarchar(50) not null
)

 

如上表,当向表中插入数据时,自增字段 [userid] 是按当前已有值自动增长的,可使用下面语句:

insert [dbo].[t_user] ([username]) values ('Join')

 

语句执行后,[userid] 是自动生成的,如果插入前最大值是 5,那么执行该语句后就是 6。

 

如果希望手动指定 [userid] 的值,比如原表中已有值是 1,3,4,5 ,希望插入一条后的 [userid] 为 2,那么上面的语句就不行了。

 

应该怎么做呢?看如下语句:

set identity_insert [dbo].[t_user] on  --允许指定自增字段的值
insert [dbo].[t_user] ([userid],[username]) values (2,'Join')
set identity_insert [dbo].[t_user] off  --关闭

 

用上面的语句插行后,就会插入一条 [userid] 为 2 的记录。但如果 [userid] 的类型不是自增型的,用上面的语句会出错。