你們用於生成唯一帳號的用途是什麼? 一些使用Autoinc字段,其他的東西... 什麼是適當的方式,即在運行插入查詢之前獲取帳號?我應該如何創建獨特的賬單/賬號?
回答
你還沒有告訴我們您所使用的數據庫系統,但是從它的聲音,你在談論德爾福的Paradox表格。如果是這樣,一個autoInc列可以工作,但如果我沒有記錯,使用Paradox autoInc列移動數據時必須非常小心,因爲它們在移動時從零重新生成。如上所述,您可以使用GUID - sysutils.function CreateGUID(out Guid:TGUID):HResult; - 它們將永遠是唯一的,但GUIDS的缺點是,按這些鍵排序並不直觀,可能沒有意義,所以您需要某種時間戳列來維護插入的順序,這可以重要。另外,一個GUID是一個相當長的字符串,對於用作帳號#來說效率並不高,這個帳號在很多表中都是主鍵或外鍵。
所以如果你想自動獲取某些東西,我會堅持使用autoInc,但是如果你必須移動數據,並且需要保留原始鍵,請將原始autoincs作爲整數列加載到新位置,否則最終會破壞整個數據庫。 (我相信還有其他一些情況也會導致autoIncs在Paradox表中重置 - 如果相關的話,研究此問題 - 從我使用Pdox開始已經很長時間了,並且這對其他平面文件數據庫可能不會有問題)
如果您的確在使用數據庫服務器--SQLServer,Oracle,Interbase等,它們都具有autoInc/indentity或generator功能,有時與觸發器結合使用 - 這是您的最佳選擇。
如果你想在Delphi代碼中自己處理這個問題,Dorin的答案也是一個很好的解決方案。創建一個全局的線程安全函數來實現它 - 這將確保非常高的安全級別。
HTH
如果您使用的是SQL數據庫,請使用Generator。如果你想使用一個獨立的機制,你可以考慮使用一個GUID。
我用這個PHP代碼片段來產生一個像樣的帳號:
$account_number = str_replace(array("0","O"),"D",strtoupper(substr(md5(time()),0,7)));
這將創建一個不包含0或O公司(以避免在手機上的錯誤或抄寫他們一個7位數的varchar字符串電子郵件等)你得到像EDB6DA6或76337D5或DB2E624的東西。
根據您需要的數量多長時間,你可以用Jamies MD5變換去還是:
var
LDateTime: TDateTime;
LBytes: array[0..7] of Byte absolute LDateTime;
LAccNo: string;
Index: Integer;
begin
LDateTime := Now;
LAccNo := EmptyStr;
for Index := 0 to 7 do
LAccNo := LAccNo + IntToHex(LBytes[ Index ], 2);
// now you have a code in LAccNo, use it wisely (:
end;
- 1. 如果我的iOS應用需要公司名稱,我應該a)轉賬或b)創建一個新賬戶?
- 2. 不能創建管理條紋賬戶匯款到賬號
- 3. Ubuntu的用戶賬號創建
- 4. 爲創建賬戶
- 5. 假Facebook賬號
- 6. paypal自適應賬戶創建
- 7. 我該如何編寫可以進行銀行賬戶轉賬的軟件?
- 8. Exchange 2007的賬號
- 9. Android的賬單 - 我應該實現ServiceConnection或IMarketBillingService
- 10. 創建對同一賬戶
- 11. android:authorize.net api創建賬戶
- 12. 應付賬款和應收賬款
- 13. Quickbooks應收賬款和應付賬款
- 14. 哪個Joomla擴展最適合賬單和註冊賬號?
- 15. 如何爲賬單創建正確的順序?
- 16. SAS通過賬號
- 17. 設計一個賬戶對賬單
- 18. 跨賬戶訪問使用boto3爲AWS賬戶創建角色
- 19. 流星賬戶禁止創建賬戶功能從網站
- 20. 賬單和API
- 21. Windows Azure賬單
- 22. 發佈到我的推文賬號
- 23. visualstudio.com,忘記賬號,使用微軟賬號
- 24. 更新推特賬號大名單的追隨者人數?
- 25. 如何實現gmail賬號認證
- 26. 如何使用流星賬號?
- 27. 如何用賬號登錄-Just
- 28. 創建AWS賬戶配置的備份
- 29. 將您的客戶賬單轉入賬單支付站點
- 30. 如何在openerp中設置應付賬款和應收賬款的默認值
你會使用這個帳號?你會將它公開給客戶,後臺,其他系統嗎?如果是這樣,那麼他們對這個數字的要求是什麼? –
你正在使用什麼DBMS(數據庫)? –
答案也將取決於分配的位置:服務器端與客戶端問題。 – menjaraz