Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)delv
published in(发表于) 2013/12/30 4:36:57
Sql,Server2005_mssql学习_编程技术

Sql Server2005_mssql学习_编程技术-你的首页-uuhomepage.com


--> Title : 自增列重複與不連續







--> Author : wufeng4552







--> Date : 2009-11-13 08:31:12















--自增列通常在以下幾種情況而導致不連續







if object_id('tb')is not null drop table tb







go







create table tb(ID int identity(0,1),name varchar(10)unique)







--1插入失敗自動回滾







insert tb([name]) select 'A'







insert tb([name]) select 'A'







/*







錯誤原因







訊息2627,層級14,狀態1,行4







違反UNIQUE KEY 條件約束'UQ__tb__6B79F03D'。無法在物件'dbo.tb' 中插入重複的索引鍵。







陳述式已經結束。







*/







insert tb([name]) select 'B'







select * from tb







-->查詢結果







/*







(1 個資料列受到影響)







ID name







----------- ----------







0 A







2 B







(2 個資料列受到影響)







*/







if object_id('tb')is not null drop table tb







go







create table tb(ID int identity(0,1),name varchar(10)unique)







--2手動回滾







insert tb([name]) select 'B'







begin tran







insert tb([name]) select 'A'







rollback tran







insert tb([name]) select 'C'







select * from tb







-->查詢結果







/*







ID name







----------- ----------







0 B







2 C







(2 個資料列受到影響)







*/







if object_id('tb')is not null drop table tb







go







create table tb(ID int identity(0,1),name varchar(10)unique)







--3重置種子







insert tb([name]) select 'B'







dbcc checkident(tb,reseed,2)







insert tb([name]) select 'C'







insert tb([name]) select 'D'







select * from tb







-->查詢結果







/*







ID name







----------- ----------







0 B







3 C







4 D







(3 個資料列受到影響)*/







if object_id('tb')is not null drop table tb







go







create table tb(ID int identity(0,1),name varchar(10)unique)







--4刪除







insert tb([name]) select 'B'







insert tb([name]) select 'C'







delete tb where [name]='C'







insert tb([name]) select 'D'







select * from tb







-->查詢結果







/*







ID name







----------- ----------







0 B







2 D







(2 個資料列受到影響)







*/















--自增列通常在以下幾種情況而導致重複







if object_id('tb')is not null drop table tb







go







create table tb(ID int identity(0,1),name varchar(10)unique)







--1手動插入







insert tb([name]) select 'B'







insert tb([name]) select 'C'







set identity_insert tb on







insert tb(id,[name]) select 1,'D'







set identity_insert tb off







select * from tb







-->查詢結果







/*







ID name







----------- ----------







0 B







1 C







1 D







(3 個資料列受到影響)







*/







if object_id('tb')is not null drop table tb







go







create table tb(ID int identity(0,1),name varchar(10)unique)







--2種子重置







insert tb([name]) select 'B'







dbcc checkident(tb,reseed,-1)







insert tb([name]) select 'C'







select * from tb







-->查詢結果







/*







ID name







----------- ----------







0 B







0 C















(2 個資料列受到影響)







*/










If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759