在数据库中, 常用的一个流水编号通常会使用 identity 栏位来进行设置, 这种编号的好处是一定不会重覆, 而且一定是唯一的, 这对table中的唯一值特性很重要, 通常用来做客户编号, 订单编号等功能, 以下介绍关于此种栏位常用方式及相关技术.

CREATE TABLE products (id int IDENTITY PRIMARY KEY, product varchar(40))

取得identity值: 
因为 identity 特性, 所以在 insert into 该 table 时, 不能指定该 identity 栏位值, 仅能指定其他栏位值, 而 identity 由资料库维护, 所以一般要在 insert 后取得该 identity 栏位值, 则通常使用下面方式:

利用全局变量 @@identity 来取得最后影响的 insert 后产生的 identity 值, 如此一来便能方便地使用 identity 栏位.

若要启用识别插入(identity insert)时, 也就是如空缺号要指定 identity 栏位值时, 或者是处理资料表整理或备出时, 会用到的方式: 
set identity_insert products on 
insert into products (id, product)values(12, 'screwdriver') 
要注意的地方是可以 insert 空缺号, 也可以加至最后, 但係统会自动更新 identity 至最大值, 要注意一旦启用 identity_insert 时, 就一定要给定 identity 值, 另外并不能 update 该 identity 栏位值, 也就是说 identity_insert 该 identity 栏位仅 for insert, 不能 update.

查询目前 identity 值: 
有时我们需要查询目前 table 中该 identity 栏位最大值是多少时, 可以利用 dbcc 指令, 如下: 
dbcc checkident('product', NORESEED) 
可以获得目前最大值的结果.

重设目前最大 identity 值: 
一样利用 dbcc 指令, 如下: 
dbcc checkident('product',RESEED,100) 
如此一来, 便能将目前的最大 identity 值指向100, 当然若故意设比目前最大值小时, 係统仍会接受, 但若 identity 遇上重覆资料时(如将 identity 设为 primary key时), 将会发生重大问题, 该 table 变成无法 insert 资料, 因为会发生 primary key violation, 解决方法当然就是将目前的 identity 修復, 直接使用 
dbcc checkident('products', RESEED) 
或 
dbcc checkident('products')

在SQL Server数据库中为标识(IDENTITY)列插入显式值: 
SET IDENTITY_Insert [TableName] ON 
如:

  1. SET IDENTITY_Insert member ON
  2. insert member(id,username) values(1,'admin')
  3. SET IDENTITY_Insert member OFF
SET IDENTITY_Insert member ON
insert member(id,username) values(1,'admin')
SET IDENTITY_Insert member OFF

插入显式值后并不影响原来的identity值的大小。

SQL SERVER 中identity用法的更多相关文章

  1. SQL Server 中@@IDENTITY的用法

    原文地址:http://www.studyofnet.com/news/145.html 本文导读:@@IDENTITY是返回上次插入的标识值,标识值一般指的是自动增长值.但是如果想只返回插入到当前作 ...

  2. Sql server中DateDiff用法【转】

    记录下来.每次使用都忘记.... DATEDIFF 函数 [日期和时间] 功能 返回两个日期之间的间隔. 语法 DATEDIFF ( date-part, date-expression-1, dat ...

  3. 【转】SQL SERVER 中 sp_rename 用法

    因需求变更要改表的列名,平常都是跑到Enterprise manager中选取服务器->数据库->表,然后修改表,这样太麻烦了,查了一下,可以用script搞定,代码如下: EXEC sp ...

  4. SQL SERVER 中 sp_rename 用法

    转自:http://www.cnblogs.com/no7dw/archive/2010/03/04/1678287.html 因需求变更要改表的列名,平常都是跑到Enterprise manager ...

  5. SQL SERVER 中 GO 的用法2

    具体不废话了,请看下文详解. 1 2 3 4 5 6 7 8 9 10 use db_CSharp go  select *,  备注=case  when Grade>=90 then '成绩 ...

  6. SQL Server 中 with tmp 临时表的用法

    SQL Server 中 with tmp 临时表的用法 ----------with临时表用法,有时候采用临时表比采用in的效率更高,避免了全表扫描. 实例中实现了查询普通题.大题.子题目的sql ...

  7. SQL Server中UPDATE和DELETE语句结合INNER/LEFT/RIGHT/FULL JOIN的用法

    在SQL Server中,UPDATE和DELETE语句是可以结合INNER/LEFT/RIGHT/FULL JOIN来使用的. 我们首先在数据库中新建两张表: [T_A] CREATE TABLE ...

  8. sql server中quotename()函数的用法(转载)

    操作sql server尤其是写存储过程时,要用到各种各样的函数,今天就总结一个quotename()的用法.1.语法: quotename('character_string'[,'quote_ch ...

  9. sql server中QUOTENAME()函数的用法

    操作sql server尤其是写存储过程时,要用到各种各样的函数,今天就总结一个quotename()的用法. 1.语法: quotename('character_string'[,'quote_c ...

随机推荐

  1. bzoj 3091 城市旅行(LCT+数学分析)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3091 [思路] 膜Popoqqq大爷的题解 click here [代码]是坑... ...

  2. 《锋利的Jquery第二版》读书笔记 第一章

    按照书本介绍顺序整理jquery库相关的语法.要点. window.onload与$(document).ready()功能类似,前者需要所有资源加载完毕,且不能同时编写多个:后者加载完DOM结构即执 ...

  3. 关于 终端 ls 命令 不能区分文件和目录的问题

    默认的,使用ls命令来显示目录内容的时候,“终端”对于目录.可执行文件等特殊类型的文件并没有使用颜色来显示,只有使用“ls -G”时,才能显示颜色,这可真是不方便.有没有方法可以默认显示颜色呢?方法当 ...

  4. jemalloc优化MySQL、Nginx内存管理

    上一篇文章<TCMalloc优化MySQL.Nginx.Redis内存管理>,下面来看下jemalloc jemalloc源于Jason Evans 2006年在BSDcan confer ...

  5. 转】Maven学习总结(五)——聚合与继承

    原博文出自于: http://www.cnblogs.com/xdp-gacl/p/4058008.html 感谢! 一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1. ...

  6. 【转】 Nginx系列(一)--nginx是什么?

    原博文出于:http://blog.csdn.net/liutengteng130/article/details/46700939  感谢! 一.介绍 Nginx是一个高性能的HTTP和反向代理服务 ...

  7. Spark生态之Spark Graphx

  8. 北京Uber优步司机奖励政策(3月5日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  9. UVALive 7278 Game of Cards (sg函数)

    Game of Cards 题目链接: http://acm.hust.edu.cn/vjudge/contest/127406#problem/G Description Alice and Bob ...

  10. Codeforces Round #332 (Div. 二) B. Spongebob and Joke

    Description While Patrick was gone shopping, Spongebob decided to play a little trick on his friend. ...