SQL Server 自动递增列 IDENTITY
来源:互联网 发布:淘宝上卖视频教程违规 编辑:程序博客网 时间:2024/05/16 18:13
SQL Server 通过IDENTITY 来设置
参数有2个,一个是“初始值”一个是“增量”。
1> CREATE TABLE test_create_tab2 (
2> id INT IDENTITY(1, 1) PRIMARY KEY,
3> val VARCHAR(10)
4> );
5> go
1> INSERT INTO test_create_tab2(val) VALUES ('NO id');
2> go
默认情况下INSERT语句中,不能对IDENTITY 的字段进行赋值。
1> INSERT INTO test_create_tab2(id, val) VALUES (6, 'id no use');
2> go
消息544,级别16,状态1,服务器HOME-BED592453C\SQLEXPRESS,第1行
当IDENTITY_INSERT设置为OFF时,不能为表'test_create_tab2'中的标识列插入显式值。
1> INSERT INTO test_create_tab2(val) VALUES ('A');
2> INSERT INTO test_create_tab2(val) VALUES ('B');
3> INSERT INTO test_create_tab2(val) VALUES ('C');
4> INSERT INTO test_create_tab2(val) VALUES ('D');
5> go
1> SELECT * FROM test_create_tab2;
2> go
id val
----------- ----------
1 NO id
2 A
3 B
4 C
5 D
(5行受影响)
当IDENTITY列中间的数据被删除,造成数据不连续的时候。
可以通过SET IDENTITY_INSERT 表名ON/OFF语句来允许/禁止对IDENTITY列进行显式的插入动作。
--删除一个数据,造成数据不连续.
1> DELETE FROM test_create_tab2 WHERE id = 3;
2> go
(1行受影响)
--允许将显式值插入表的标识列中
1> SET IDENTITY_INSERT test_create_tab2ON
2> go
1> INSERT INTO test_create_tab2(id, val) VALUES (3, 'id is use');
2> go
(1行受影响)
--不允许将显式值插入表的标识列中
1> SET IDENTITY_INSERT test_create_tab2OFF
2> go
1> SELECT * FROM test_create_tab2;
2> go
id val
----------- ----------
1 NO id
2 A
3 id is use
4 C
5 D
(5 行受影响)
IDENTITY的重置
方案一:通过truncate table 处理
[此命令将删除表中所有的数据,使用前你需要确认你是否要做这个操作. 如果不希望修改表数据的,请采用方案二]
1> truncate table test_create_tab2;
2> go
1> INSERT INTO test_create_tab2(val) VALUES ('NO id');
2> go
(1行受影响)
1> select * from test_create_tab2;
2> go
id val
----------- ----------
1 NO id
(1行受影响)
方案二:使用DBCC
1> select * from test_create_tab2;
2> go
id val
----------- ----------
2 NO id
(1行受影响)
1> delete from test_create_tab2;
2> go
(1行受影响)
查看当前ID。
1> DBCC CHECKIDENT('test_create_tab2',NORESEED)
2> go
检查标识信息:当前标识值'2',当前列值'2'。
DBCC执行完毕。如果DBCC输出了错误信息,请与系统管理员联系。
重置ID
1> DBCC CHECKIDENT('test_create_tab2',RESEED, 100)
2> go
检查标识信息:当前标识值'2',当前列值'100'。
DBCC执行完毕。如果DBCC输出了错误信息,请与系统管理员联系。
1> INSERT INTO test_create_tab2(val) VALUES ('NO id');
2> go
(1行受影响)
1> select * from test_create_tab2;
2> go
id val
----------- ----------
101 NO id
(1行受影响)
IDENTITY只能在如下情况下建立:
在创建表时创建新的IDENTITY列
在现有表中创建新的IDENTITY列
不能 把已经存在的列,修改为IDENTITY列
- SQL Server 自动递增列 IDENTITY
- SQL Server -identity列
- SQL SERVER中利用IDENTITY属性创建自动ID列
- 解析SQL Server identity列的操作方法
- 解析SQL Server identity列的操作方法
- sql server 2005 identity 标识列小结
- sql server identity 列的一些方法
- SQL SERVER IDENTITY列插入处理
- SQL Server数据库中经常用到的identity列
- SQL Server数据库中经常用到的identity列
- SQL Server中Identity标识列的重新设置
- SQL Server数据库中经常用到的identity列
- SQL Server数据库中经常用到的identity列
- SQL Server数据库中经常用到的identity列
- SQL Server数据库中经常用到的identity列
- Sql Server 中如何删除列的identity属性
- sql server 重置 identity
- SQL SERVER identity
- 关于daemonize()
- Android2.3.7源码结构分析
- 黑马程序员java学习笔记之三(java集合框架类)
- 编程找出1000以内的所有完数。
- android系统Android.mk写法
- SQL Server 自动递增列 IDENTITY
- License_max_sessions,license_max_users,license_sessions_warning
- 分类和聚类的区别
- 计算存款利息。
- Struts2(2.1.2)部分源码阅读
- Mini-XML的使用手册
- PendingIntent
- 用循环控制语句编写程序,完成表达式的计算
- stm32的通用计数器用于编码器的脉冲计数