自定義自動增長列

2021-06-29 03:18:14 字數 1519 閱讀 4250

在論壇中看到的:

在學習中遇到這個問題 

資料庫裡有編號字段 

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 行)

*/--參考

ORACLE的自動增長列

關於oracle自動增長列 sqlserver2000有自動增長 create sequence seq tab g increment by 1 start with 1 maxvalue 9999999 minvalue 1 建立序列 seq tab g.currval 指當前序列 seq ta...

oracle實現自動增長列

2008 01 31 15 53 sequence 首先使用者要有create sequence或者create any sequence許可權.然後使用下面命令生成sequence物件 create sequence emp sequence increment by 1 每次加幾個 start ...

給oracle設定自動增長列

create sequence auto add 序列名 auto add 為系列名,隨便取名 increment by 1 每次增加1 start with 1 從1開始 nomaxvalue 沒有最大值 nocache 沒有快取序列 再次,建立乙個觸發器 create or replace tr...