線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1105
推到 Plurk!
推到 Facebook!

關於"自動編號"的應用.....

 
huangchin
一般會員


發表:3
回覆:18
積分:4
註冊:2002-12-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-16 23:02:49 IP:203.204.xxx.xxx 未訂閱
最近有蠻多主題在討論資料庫中"自動編號"的議題, 自動編號的確是有很多時機可以加以應用, 但是有時候像是使用複合主鍵的方式的時候, 可能會設計成"欄位A-文字","欄位B-序號", 這時候欄位B在實務上就不太適合使用自動編號的形式了. 以往,在實務上通常用程式抓出目前在資料庫中最大的序號加1後 再寫回資料庫.這邊就有個疑問了,在一般多人作業環境中, 可能會有n個人同時要對資料庫作業,大家可能都是抓回資料後一段時間 後才會做新增,這時候會不會因為時間差的問題造成AP會產生同樣的序號? 實務上有人碰過這個問題嗎?如果有這樣的可能性, 會什麼樣的解決方案是大家比較建議的...^^
pgdennis
資深會員


發表:41
回覆:526
積分:443
註冊:2002-05-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-17 20:14:56 IP:203.67.xxx.xxx 未訂閱
比較簡單的方式是存檔時(before post)再將項次或單號(序號)寫入field, 取出單號最大值+1後,馬上將資料存回資料庫, 這樣發生單號重複錯誤的機率就會小很多. 如此就能盡量防止使用者新增後取得單號,又過了很久才存檔所會遇到的單號重複 錯誤. 星期一,星期二...星期日..星期一..無窮迴圈@@
------
星期一,二...無窮迴圈@@
huangchin
一般會員


發表:3
回覆:18
積分:4
註冊:2002-12-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-19 11:16:25 IP:203.204.xxx.xxx 未訂閱
謝謝,我想最大的關鍵點就在取得目前最大序號的時機點,要能夠愈快愈好, 才能儘可能的避免時間差,在內部應用的部份其實可以不太care這個問題的, 但如果是非web base的而且是AP base並且不是做多層架構的話, 這個問題似乎就不能不去考量他了.. 目前我所用過的做法是在要寫入前,再去資料庫內抓,並馬上接續著處理 資料,目前是還OK,但一直再想還有沒有更好的方式. 是有想到搭配交易機制,或著是預儲程序的方向....^^
chfamy
中階會員


發表:87
回覆:161
積分:54
註冊:2002-05-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-19 14:18:22 IP:61.219.xxx.xxx 未訂閱
小弟拙作供大家參考(一般單據&統一發票): 編號公式: S:特殊字串(SS) Y:年份(西元YY/民國YY) M:月份(MM) N:流水序號(NNNN) 一般單據: 統一發票:
系統時間:2024-06-30 23:13:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!