SQL server-自增主键

1.CREATE   TABLE   表名(   
  字段名   [int]   IDENTITY   (1,   1)   NOT   NULL   ,    //--(seed = 1,increment = 1) 從1開始,每次遞增1 
  ...   
  )   

2.在SQL   SERVER中,所有整数类型的列都可以定义成自增长列,叫作“标识”,   
  它通过设定“标识种子”和“标识递增量”来实现功能。   
  列如:   
    
          列         类型               标识       标识种子       标识递增量   
        ----       -------       ----       -------       ----------   
        test         tinyint         √               1                     1   
    
      当你插入一行后,会从1开始自动的赋值。(1、2、3、4……255)   
      
  方法为:   
      1、选中表;   
      2、右击鼠标,设计;   
      3、选中列(整数类型)   
      4、设定标识为“是“(默认为“否”)、标识种子和标识递增量(一般为1)。 

 

3.给定指定值自增

  1).当数据库表字段的列设置为自增列后,不能人为改变自增列的值

  2).但有时候在导数据或公用配置过程中,有些基础设置的值是不变的或者是固定,这样在新起项目或导数据时会出现问题。

  怎么才能修改自增列的值,让导入的数据按我们指定的值存放呢,  

  3).下面介绍一种简单的数据设置方法:

  IDENTITY_INSERT

  参数:ON(开始) OFF(结束)

  注:此方法只可插入新值,仍然不能修改原有Identity列的值

  示例:

SET IDENTITY_Insert TestTABLE ON     
insert TestTABLE(IDENTITYID,Code,XX,XX)  
VALUES(43,'','xx','xx');      
SET IDENTITY_INSERT TestTABLE OFF 

说明: 

TestTable:数据库表名

IDENTITYID:自增列字段

这样我们就可以轻松进行数据导入,或写入指定值的数据了

 

4、取自增最新值

SELECT IDENT_CURRENT('tablename') + IDENT_INCR('tablename') as newid

IDENT_CURRENT( 'table_name' ) 返回为指定的表或视图生成的最后一个标识值。所生成的最后一个标识值可以针对任何会话和任何作用域。


SCOPE_IDENTITY 返回插入到同一作用域中的标识列内的最后一个标识值。一个范围是一个模块:存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。


IDENT_INCR ( 'table_or_view' ) 返回增量值(返回形式为 numeric (@@MAXPRECISION,0)),该值是在带有标识列的表或视图中创建标识列时指定的。

posted on 2017-12-13 09:43  michellexiaoqi  阅读(42152)  评论(0编辑  收藏  举报