虽然用户不会看到,但总感觉不太好。 create table TProduct(ProductID int identity(1,1),ProductName varchar(6)); create unqiue index IX_TProduct_ProductName ON TProduct(ProductName); 一、第1次插入 insert into ('AA'); ProductID =1 二、第2次插入 insert into ('AA'); 由于有唯一索引,系统报错,说不让插入。三、第3次插入 insert into ('B'); ProductID =3正常来说,插入都没有成功,为什么这个表的identity还会跳。可以设置只能正确插入才跳号呀。
create table TProduct(ProductID int identity(1,1),ProductName varchar(6));
create unqiue index IX_TProduct_ProductName ON TProduct(ProductName);
一、第1次插入
insert into ('AA'); ProductID =1
二、第2次插入
insert into ('AA'); 由于有唯一索引,系统报错,说不让插入。三、第3次插入
insert into ('B'); ProductID =3正常来说,插入都没有成功,为什么这个表的identity还会跳。可以设置只能正确插入才跳号呀。
程序员能够控制的是种子的: 每次增量值(默认为1)
这个字段完全不用管
不过这对系统没有什么影响,因为用户不关心这个。
————————————————————————————————————————————
其实你这个要求仅仅是个人的一面之辞。SQL Server是面向企业管理、要并发处理效率的,所以不会对全局的资料随便上锁(这会让系统慢上十倍还不止)。这是很“现实”的技术问题,不是一厢情愿按照个人单机小软件的要求去实现的。因此,你完全可以去自己写这个流水号而不用identity,或者等着SQL Server将来专为此类用户做一个新的操作类型。