在數(shù)據(jù)庫中自動生成編號的實現(xiàn)方法分享
發(fā)布日期:2022-01-22 13:06 | 文章來源:源碼中國
1.建立這樣的簡單的表Test.

2.設(shè)置字段id的自增.

3.表添加數(shù)據(jù)
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的兩行數(shù)據(jù)了.(不上圖了)
6.再添加一條數(shù)據(jù).
insert into Test(name) values('TestName')
我們會發(fā)現(xiàn)這或許不是我們想要的結(jié)果了

為什么沒有id為2的呢? 之后任你死命的加,也不會有id為2的數(shù)據(jù)行了!
這樣的設(shè)計固然方便,但是魔鬼在于細節(jié),這篇博客就是為了解決這個問題讓我們重新見到id為2的數(shù)據(jù)行(這里順便改進一下,讓結(jié)果不只是顯示id為2這樣的int,假如有一天我們的各戶要求我們他們要一個5位數(shù)的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)--這里的兩個數(shù)字'5' 就是我們要設(shè)置的id長度
break
end
end
end
2.用SQL 語句調(diào)用這個存儲過程
復(fù)制代碼 代碼如下:
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)--這里的兩個數(shù)字'5' 就是我們要設(shè)置的id長度
break
end
end
end
2.用SQL 語句調(diào)用這個存儲過程
execute insertNameTest
你可以狂按幾次,幾十次,幾百次,我們要的數(shù)據(jù)加進去了,

我們可以刪除指定的id數(shù)據(jù)行,當我們再次進行添加的時候,之前被刪掉的id行,將會被我們新添加的數(shù)據(jù)所覆蓋,這樣id就都可以連接起來了.
哦,對了,還沒有說如何顯示的是 '0' 開頭的呢?這個簡單,將id的數(shù)據(jù)類型設(shè)置為nvarchar(5),就是這么簡單!呵呵!
總結(jié):
這里我們調(diào)用了存儲過程,存儲過程不宜多用,但是有的時候還真是用起來很方便,本文章對于剛剛工作的童鞋們應(yīng)該還是有點幫助的吧,好好學習吧,生活很美好!
如釋重負的感覺啊,終于搞定一個問題,在這里感謝幫助我的童鞋們! 下次再會!
總結(jié):
這里我們調(diào)用了存儲過程,存儲過程不宜多用,但是有的時候還真是用起來很方便,本文章對于剛剛工作的童鞋們應(yīng)該還是有點幫助的吧,好好學習吧,生活很美好!
如釋重負的感覺啊,終于搞定一個問題,在這里感謝幫助我的童鞋們! 下次再會!
版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
相關(guān)文章
關(guān)注官方微信