我個人開發的習慣是會建primary key,可以避免重覆的問題
如果你的訂單單號是多個欄位的話,就看要不要建Composite Key
在新增的時候還會再加where去判斷該訂單單號是否有使用
有時候直接對DB新增、修改時就有可能會有重覆了
以上,給你參考
如果是將最大號碼記錄在Table裡面,一定會有號碼重複的問題
因為在update max_number+1的時候,可能又有別張單子取號了
以前我們公司就有這樣的問題
分享一些小心得,希望能幫點小忙
1.訂單號碼不像發票,一定要續時續號,建議可以直接採用sequence的設定去
取流水號,這樣不會有號碼重複問題,但是程式若沒寫好,會有跳號問題.
(sequence也可以reset初始號)
2.維持現行做法,但是在table的回寫,可以採用wait for update的管控
http://www.techonthenet.com/oracle/cursors/for_update.php
select_statement
FOR UPDATE [OF column_list] [NOWAIT];
再取號前可以先做些DML動作的卡控.
我個人傾向採用sequence的建立.如果有更好的方法,再請分享喔~ ^^
不可能~
訂單編號由系統產生
現在的電腦隨便都有每秒處理上百筆的能力
人Key單的速度不會比電腦快
所以不可能二個人以上同時處理的問題
最少有MS的時間差
通常遇到訂單編號重碼的問題,都會在取號的時候做lock的動作,並記錄現在取到幾號,
取號完畢再解鎖,這樣就不會重碼了,參考看看