在數據庫中主動生成編號的完成辦法分享。本站提示廣大學習愛好者:(在數據庫中主動生成編號的完成辦法分享)文章只能為提供參考,不一定能成為您想要的結果。以下是在數據庫中主動生成編號的完成辦法分享正文
在應用數據庫的時刻,不免要在應用進程中停止刪除的操作,假如是應用int類型的字段,令其自增加,這是個最簡略的方法,然則效果會有些不是你想要的!看下這個Demo:
1.樹立如許的簡略的表Test.
2.設置字段id的自增.
3.表添加數據
insert into Test(name) values('TestName')
insert into Test(name) values('TestName')
insert into Test(name) values('TestName')
4.你會看到
5.在這裡我們刪除id為2的行.就只剩下了id為1和id為3的兩行數據了.(不上圖了)
6.再添加一條數據.
insert into Test(name) values('TestName')
我們會發明這也許不是我們想要的成果了
為何沒有id為2的呢? 以後任你逝世命的加,也不會有id為2的數據行了!
如許的設計雖然便利,然則魔鬼在於細節,這篇博客就是為懂得決這個成績讓我們從新見到id為2的數據行(這裡趁便改良一下,讓成果不只是顯示id為2如許的int,假設有一天我們的各戶請求我們他們要一個5位數的id號嗎,從00000開端,OK,這沒成績)
1.配角退場,存儲進程終究派上了用處了
Create procedure [dbo].[insertName]
(@name nvarchar(50))
as
begin
declare @i int
set @i=1
while(@i<10000)
begin
if exists(select convert(int,id) from numbertest where convert(int,id)=@i)
begin
set @i=@i+1
continue
end
else
begin
insert numbertest values(right('0000'+convert(varchar(5),@i),5),@name)--這裡的兩個數字'5' 就是我們要設置的id長度
break
end
end
end
2.用SQL 語句挪用這個存儲進程
execute insertName Test
你可以狂按幾回,幾十次,幾百次,我們要的數據加出來了,
我們可以刪除指定的id數據行,當我們再次停止添加的時刻,之前被刪失落的id行,將會被我們新添加的數據所籠罩,如許id就都可以銜接起來了.
哦,對了,還沒有說若何顯示的是 '0' 開首的呢?這個簡略,將id的數據類型設置為nvarchar(5),就是這麼簡略!呵呵!
總結:
這裡我們挪用了存儲進程,存儲進程不宜多用,然則有的時刻還真是用起來很便利,本文章關於方才任務的童鞋們應當照樣有點贊助的吧,好勤學習吧,生涯很美妙!
如釋重負的感到啊,終究弄定一個成績,在這裡感激贊助我的童鞋們! 下次再會!