获取数据库表的序列值

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值

posted @ 2011-05-06 11:40  茶海  阅读(1487)  评论(0编辑  收藏  举报