在論壇中看到的:
在學習中遇到這個問題
資料庫裡有編號字段
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...