如何給資料庫自增ID定義規定格式

2021-06-17 15:03:00 字數 1527 閱讀 6711

在學習中遇到這個問題 

資料庫裡有編號字段

bh00001

bh00002

bh00003

bh00004

如何實現自動增長

--下面的**生成長度為8的編號,編號以bh開頭,其餘6位為流水號。

--得到新編號的函式

create function f_nextbh()

returns char(8)

asbegin

return(select 'bh'+right(1000001+isnull(right(max(bh),6),0),6) from tb with(xlock,paglock))

endgo

--在表中應用函式

create table tb(

bh char(8) primary key default dbo.f_nextbh(),

col int)

--插入資料

begin tran

insert tb(col) values(1)

insert tb(col) values(2)

insert tb(col) values(3)

delete tb where col=3

insert tb(col) values(4)

insert tb(bh,col) values(dbo.f_nextbh(),14)

commit tran

--顯示結果

select * from tb

/*--結果

bh col

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

bh000001 1

bh000002 2

bh000003 4

bh000004 14

--*/

create table tb

(id int identity,

name varchar(10),

code as 'bh'+right('0000'+cast(id as varchar),5))

goinsert tb(name) select 'a'

union all select 'b'

union all select 'c'

union all select 'd'

select * from tb

drop table tb

/*id name code

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

1 a bh00001

2 b bh00002

3 c bh00003

4 d bh00004

(所影響的行數為 4 行)

*/--參考

資料庫ID自增優缺點?

優點 1.自增,趨勢自增,可作為聚集索引,提公升查詢效率 2.節省磁碟空間。500w資料,uuid佔5.4g,自增id佔2.5g.3.查詢,寫入效率高 查詢略優。寫入效率自增id是uuid的四倍。缺點 1.匯入舊資料時,可能會id重複,導致匯入失敗。2.分布式架構,多個mysql例項可能會導致id重...

模擬自增ID提高資料庫移植性

在我的orm中,乙個最大的問題就是怎麼去模擬自增主鍵,因為orm中的主鍵是程式控制的。1.select max col from table 這種方法肯定不行,一出現併發就完蛋了。如果在程式裡面做迴圈直到插入成功,那麼邏輯就會非常的煩。2.新增一張專門儲存主鍵的表,每次先更新再讀取。使用事務控制併發...

資料庫自增id竟然被我用完了

事情的起因是這樣的 幾個月前做過乙個統計型別的job,上線之後小修小補了幾次一直執行的很平穩,就是有乙個缺點 慢。起初我一直以為是因為資料量過大導致的,每天早上六點準時開跑,一般要到下午一兩點才能跑完,其實現在想想這麼長時間的執行肯定是不合理的,而且本身業務的資料量也沒有大到那個地步,但是由於一直工...