程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> 在數據庫中主動生成編號的完成辦法分享

在數據庫中主動生成編號的完成辦法分享

編輯:MSSQL

在數據庫中主動生成編號的完成辦法分享。本站提示廣大學習愛好者:(在數據庫中主動生成編號的完成辦法分享)文章只能為提供參考,不一定能成為您想要的結果。以下是在數據庫中主動生成編號的完成辦法分享正文


在應用數據庫的時刻,不免要在應用進程中停止刪除的操作,假如是應用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),就是這麼簡略!呵呵!  
總結:
  這裡我們挪用了存儲進程,存儲進程不宜多用,然則有的時刻還真是用起來很便利,本文章關於方才任務的童鞋們應當照樣有點贊助的吧,好勤學習吧,生涯很美妙!
  如釋重負的感到啊,終究弄定一個成績,在這裡感激贊助我的童鞋們! 下次再會!
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved