sqlserver2000欄位自動生成流水號

2021-05-24 14:16:56 字數 1243 閱讀 4595

編號規則為:re+年份+4位流水號。

開始我本來也是說用觸發器或者是儲存過程實現的,但發現儲存過程不是很清楚,於是我就用觸發器。

但寫了會,發現還是有些基本的問題。

於是我就在網上找到了乙個很好的例項。受這個的啟發,我試驗了很多次,並終於實現了,心裡很開心的。

首先:建立檢視來獲得年份,因為接下來要建立乙個函式,在函式裡面不能使用getdate()函式的。

create   view v_getdate

asselect dt=year(getdate())

然後:建立乙個函式來獲得當前的最大編號,其實也就是進行了自動編號的過程。

ps:我要進行自動編號的字段是:cha_register表中的jgid。

create     function f_nextid()

returns char(10)

asbegin

declare @dt char(6)

select @dt=dt from v_getdate

select @dt='re'+@dt

return(

select @dt+right(10001+isnull(right(max(jgid),4),0),4)

from cha_register with(xlock,paglock)                               

where jgid like @dt+'%'

)end

最後:分為兩種情況

1.還沒有建立table:

因為我的cha_register表的字段很多,所以就選用users表中的id欄位作為要自動編號的字段,方便舉例。

create table users(

id char(10) primary key default dbo.f_nextid(),

name varchar(20)

)2.已經建立了表(我就是這個情況)

這個時候就需要alter table了,其實就是對jgid欄位設定預設值。

alter table cha_register

add constraint df_a default dbo.f_nextid() for jgid

ps:如果想刪掉這個預設值的話:

alter table cha_register drop constraint df_a

通過這個刪除預設值的語句來看,在上面為字段設定預設值的時候,給預設值新增乙個預設值名字df_a是會方便很多的。

SQL Server2000欄位累加求和

源表 num1 num2 date 100 300 2008 4 2 200 500 2008 4 3 300 800 2008 4 4 結果集 num1 num2 date 100 300 2008 4 2 300 800 2008 4 3 600 1600 2008 4 4 解決方法一 crea...

SQLSERVER2000技術規格

sqlserver2000技術規格 系統技術規格 每個伺服器最多可以允許16個sqlserver例項 每個例項可擁有 2147483467 個鎖 資料庫技術規格 sqlserver的資料庫大小1048516tb 每個資料庫可擁有的檔案組數32767 每個資料庫可擁有的檔案組數256 檔案大小 資料檔...

SQLSERVER2000啟動失敗

服務管理器中啟動sqlserver服務 彈出視窗的錯誤資訊是 本地計算機上的mssqlserver服務啟動後又停止了。一些服務自動停止,如果它們沒有什麼可做的,例如 效能日誌和警報 服務 1 解決方法 調整系統時間到你上一次能夠正常啟動的時間,啟動sqlserver服務,成功後,然後再把時間調回來。...