关于SET IDENTITY_INSERT !!!

 

/* 如果插入记录的标识值大于表的当前标识值,则SQL Server自动将新插入值作为当前标识值使用*/

create table tb (id int identity(1,1),col int)

go

set identity_insert tb on

insert tb values(10,1)

set identity_insert tb off

insert tb(col)  values(20)   ----------标识列从最新的状态开始递增

select *

from tb

/*-----------------------*/     

id    col

10    1

11    20 

 

--3. 如果插入记录的标识值小于表的当前标识值,则表的当前标识值不受新插入值的影响
--测试的表
CREATE TABLE tb(id int IDENTITY(1,1),col int)
INSERT tb VALUES(1)
INSERT tb VALUES(2)

--强制在表中插入标识值
SET IDENTITY_INSERT tb ON
INSERT tb(id,col) VALUES(1,11)
SET IDENTITY_INSERT tb OFF

INSERT tb(col) VALUES(3)
SELECT * FROM tb
/*--结果
id           col
----------------- -----------
1           1
2           2
1           11
3           3

--测试资料
CREATE TABLE t1(ID int IDENTITY,A int)
INSERT t1 VALUES(1)
INSERT t1 VALUES(2)
INSERT t1 VALUES(3)
DELETE FROM t1 WHERE A=2
GO

--将ID=3的记录的ID值改为2
SET IDENTITY_INSERT t1 ON
INSERT t1(ID,A) SELECT 2,A FROM t1 WHERE ID=3
DELETE FROM t1 WHERE ID=3
SET IDENTITY_INSERT t1 OFF
SELECT * FROM t1
/*--结果
ID          A
----------------- -----------
1           1
2           3
--*/

  对应于

id        a

1         1

3         3(因为第二条记录删除了,所以id不连续了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值