討論區快速選單
知識庫快速選單
掌握Salesforce雲端管理秘訣 網路投保旅行平安險
[ 回上頁 ] [ 討論區發言規則 ]
要如何用SQL寫出年月日流水號的自動序號
更改我的閱讀文章字型大小
作者 : allbeauty(David)
[ 貼文 15 | 人氣 9241 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/4/22 上午 01:02:11
請問各位大大:
我要寫一個程式(例如:出貨管理),欄位中有出貨單號,編碼方式為YYYYMMDDXXX(年月日+流水號),SQL可以將欄位訂義成自動增加,但是小弟的問題是,那流水號必需每日都從001號開始.
我現在是用程式去Check作業日期是否不相同,如果日期不同則去將流水號欄位改成001.
那不知道SQL是否可以直接在新增或儲存中程序直接做有如此設定或者是您有什麼其它處理方式可以給小弟建議.(希望由資料庫來處理不要透過程式).
謝謝您的指教!
作者 : bobkuo(老骨頭)
[ 貼文 135 | 人氣 756 | 評價 1270 | 評價/貼文 9.41 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/4/27 下午 03:51:29
假設欄位名稱是 B ,表格是 TTT, primary key 欄位是 ID

需要建一個 觸發程序如下:

CREATE TRIGGER TTTnewRec ON [dbo].[TTT]
FOR INSERT
AS

Declare @NextID varchar(11)

SELECT @NextID=CONVERT(varchar, DATEPART(YYYY, GETDATE()) * 10000 + DATEPART(MM,
     GETDATE()) * 100 + DATEPART(DD, GETDATE()))
     + SUBSTRING(CONVERT(varchar, ISNULL(MAX(SUBSTRING(B, 11, 100)), 0)
     + 1001), 2, 3)
FROM TTT
WHERE (LEFT(B, 8) = CONVERT(varchar, DATEPART(YYYY, GETDATE())
     * 10000 + DATEPART(MM, GETDATE()) * 100 + DATEPART(DD, GETDATE())))

Update TTT Set B=@NextID Where ID=(Select ID From inserted )
作者 : judy(judy)
[ 貼文 9 | 人氣 3667 | 評價 0 | 評價/貼文 0 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/11/23 下午 06:01:44
可不可以,請你解譯一下,你寫的這個的寫法,有一點看不太懂耶…
然後,可以,請問一下,我是用jsp連接oracle的,請問一下,可以用這種寫法嗎…
謝謝你的囉…
作者 : judy(judy)
[ 貼文 9 | 人氣 3667 | 評價 0 | 評價/貼文 0 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/11/23 下午 06:02:12
可不可以,請你解譯一下,你寫的這個的寫法,有一點看不太懂耶…
然後,可以,請問一下,我是用jsp連接oracle的,請問一下,可以用這種寫法嗎…
謝謝你的囉…
作者 : ctchiu(ctchiu)
[ 貼文 1 | 人氣 1 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2005/8/11 下午 05:35:47
不知道這樣可不可以
取得日期後,select出貨單的前八位,如果有相同者,則取未三位的max值+1
若無則直接將未三位設定001,
將日期轉為字串+未三位字串 代人 出貨單號
這個是固定的作法,應該可以使用預存程序 來完成。
作者 : wiselou(Wisely)
[ 貼文 18 | 人氣 1 | 評價 20 | 評價/貼文 1.11 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/4/8 上午 11:17:10
這種寫法,最好搭配LOCK TABLE的方式處理,避免同時多人輸入時,產生相同的序號,
如果可以的話,比較建議採用樓上大大所說的,使用trigger的方式處理。
 板主 : AXNET
 > SQL Language - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - SQL Language - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
SQL Language
1 ㄉ一ˊㄎㄜˋ 1330 
2 路人 1270 
3 坤哥 700 
4 吳馨琳 460 
5 凡人 440 
6 老骨頭 390 
7 pome5 380 
8 BK. 330 
9 Tony 310 
10 HKLN.net 250 
SQL Language
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.078125