看板 java 關於我們 聯絡資訊
各位前輩好: 小弟使用的資料庫是Oracle。想請教各位,如何產生以當天日期為主的流水號,而且 日期每過一天,流水號的編號就從01開始編起。例如:15121301、15121302 、15121303、15121401、15121402等。其中,『15』表示是西元2015年。 其流水號格式為:yymmdd+2碼的流水號。而且要避免線上多人同時Insert資料時產生 重覆的編號。且該流水號的資料欄位格式是Varchar。 小弟目前想到的方法是:以當天的日期加上like 和 count 去做 select,若都沒有找到 則日期補上01;若有找到,則日期前加上 count回傳的筆數+1。 不知是否有更好的方法呢?! -- 陰律無情!是的,犯邪淫者,小如手淫、婚前性行為 均會遭折福減壽之惡報。國考者更不能犯淫邪, 否則文昌帝君會除去功名,不信請看此懺悔文: http://lustwarn.blogspot.tw/ 陰律無情!是的,犯邪淫者,若不懺悔發心改過永不再犯, 死後必入邪淫地獄,不信請看;http://goo.gl/tchBZY -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 113.183.100.11 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1452013210.A.B5E.html
swpoker: sequence? 01/06 02:14
swpoker: 這樣會重複,或用某參數表用for update 01/06 02:16
now99: 時間要到秒 01/06 07:08
ssccg: 就當天的日期加一個sequence不就好了? sequence每天reset 01/06 09:27
mrforget: create sequence [sequence_name] start with 1 01/06 18:51
mrforget: increment by 1 ; 01/06 18:51
mrforget: sequence_name.nextval 01/06 18:52
Lordaeron: 作個TABLE 負責SEQUENCE, 再用SELECT FOR UPDATE 來鎖. 01/06 23:45
BlueBird5566: 因為不確定你的是什麼系統 使用者輸入什麼資料 01/08 21:24
BlueBird5566: 但通常都是user一進頁面就要取seq.nextval 埋在背景 01/08 21:25
BlueBird5566: user送出資料就把這seq一起送出 insert到table 01/08 21:26
BlueBird5566: 就是號碼牌的概念 這樣不會重複取號 但容易跳號 01/08 21:26
BlueBird5566: 但是用oracle要不跳號也很難就是了 01/08 21:26
flowwinds: 用個table存流水號,結構(表流水號,目前流水號,時間) 01/10 21:33
flowwinds: 資料是像這樣(1,12,'150108'),每次取號用update table 01/10 21:34
flowwinds: set 目前流水號=目前就水號+1 where 時間='150108' 01/10 21:35
flowwinds: returning 目前流水號; 01/10 21:35
flowwinds: 流水號表的record可以一次生成一年份, 365/366筆 01/10 21:36
flowwinds: 取號則是在insert前, 可以是另一個獨立的transaction 01/10 21:37
flowwinds: 基本上類似樓上大大的方法.. 01/10 21:39