获取数据库表的序列值
sqlserver:
identify 字段 select IDENT_CURRENT('tablename')+1
或
insert into table xxx
select @@identity
oracle:
SEQ_STATUS.currval
将sqlserver中的自动增长序列,初始化为某一值!的详细页面。DBCC CHECKIDENT ('table_name', RESEED, new_reseed_value
DBCC CHECKIDENT ('table_name', RESEED)。
例如:
有表city
ID name type
1 1 a
2 2 b
3 3 c
4 1 a
5 2 b
6 3 c
7 1 a
8 2 b
9 3 c
10 1 a
11 2 b
12 3 c
此时当前identity最大值与ID最大值一样,都为12.
现在删除后面一部分数据,city变为
ID name type
1 1 a
2 2 b
3 3 c
4 1 a
5 2 b
此时当前identity最大值与ID最大值I 一样,ID列最大值为5,identity还是为12.此时要调整过来,将identity值调整为5..具体操作如下:
运行DBCC CHECKIDENT ('city', RESEED, 1),再运行DBCC CHECKIDENT ('table_name', RESEED)将其重值。
要想直接手工插入值到表中identity字段,需要打开该表的identity_insert选项。
Set identity_insert 表名 on/off
Set identity_insert customer on 新增记录必须手工插入id值
Set identity_insert customer off 新增记录不需要插入ID值