新聞中心
例76?快速自動生成訂單編號【CONCATENATE】
(一)函數(shù)

在網(wǎng)站制作、成都網(wǎng)站設(shè)計過程中,需要針對客戶的行業(yè)特點、產(chǎn)品特性、目標受眾和市場情況進行定位分析,以確定網(wǎng)站的風(fēng)格、色彩、版式、交互等方面的設(shè)計方向。成都創(chuàng)新互聯(lián)公司還需要根據(jù)客戶的需求進行功能模塊的開發(fā)和設(shè)計,包括內(nèi)容管理、前臺展示、用戶權(quán)限管理、數(shù)據(jù)統(tǒng)計和安全保護等功能。
CONCATENATE:將兩個或多個文本字符串聯(lián)接為一個字符串(可連接255項)
參數(shù)1:文本項1
參數(shù)2:文本項2
(二)舉例
當前工作表中分別顯示了每筆訂單產(chǎn)生的年、月、日、序號,而最終的訂單號須將這幾項數(shù)據(jù)合并得到。此時可以使用CONCATENATE函數(shù)來快速實現(xiàn)批量生成訂單號。
①在統(tǒng)計訂單時,空出一列用于顯示訂單號。選中E2單元格,在編輯欄中輸入公式:=CONCATENATE(A2,B2,C2,D2)。按回車鍵,即可合并A2、B2、C2、D2幾個單元格的值,生成第一個訂單號。
②選中E2單元格,向下復(fù)制公式,從而生成所有的訂單號。
如何生成唯一訂單號
首先,訂單號有3個性質(zhì):1.唯一性 2.不可推測性 3.效率性
唯一性和不可推測性不用說了,效率性是指不能頻繁的去數(shù)據(jù)庫查詢以避免重復(fù)。
況且滿足這些條件的同時訂單號還要足夠的短。
我在java下定制的訂單號生成方式如下:
int r1=(int)(Math.random()*(10));//產(chǎn)生2個0-9的隨機數(shù)
int r2=(int)(Math.random()*(10));
long now = System.currentTimeMillis();//一個13位的時間戳
String paymentID =String.valueOf(r1)+String.valueOf(r2)+String.valueOf(now);// 訂單ID
目前規(guī)則來看,兩個人在同一微秒提交訂單重復(fù)的概率為1%
訂單效果:251393292999921
望采納!
mysql生成訂單號
這個只能程序做的。數(shù)據(jù)庫只提供了數(shù)據(jù)的插入,修改,刪除和查詢等操作,沒有提供完備的計算功能
sql怎么為表的訂單號列自動生成訂單號
建表的時候可以指定訂單默認唯一值,比如guid,或者用觸發(fā)器自動生成訂單號
如何生成訂單號比較好
由于我在工作中遇到這個問題,借此與大家分享一下各大電子商務(wù)網(wǎng)站訂單號的生成方式。
訂單號概念
它是您在購物網(wǎng)站購物后獲得的訂單號,記錄的是購物訂單信息。
作用
在您需要與購物網(wǎng)站進行訂單查詢等操作時,需要給購物網(wǎng)站提供商家訂單號。
幾種下單途徑?
web網(wǎng)站下單
打電話到呼叫中心(CallCenter)下單
手機wap下單
如果采用單數(shù)據(jù)庫來存儲的話,隨著訂單量的增加,單庫的寫壓力增大,造成數(shù)據(jù)庫服務(wù)器性能下降。一般會采用分庫來緩解數(shù)據(jù)庫服務(wù)器的壓力。
那么怎么來進行分庫呢?
web來源訂單,存入web訂單庫。
CallCenter來源訂單,存入CallCenter訂單庫。
wap來源訂單,存入wap訂單庫。
最終,將這三種類型的數(shù)據(jù)庫同步到訂單主庫中。
問題來了,怎么把不同的訂單同步到訂單主庫呢?
電商網(wǎng)站一般利用訂單號來作為訂單表的主鍵。因此,我們必須保證訂單號不重復(fù),才能將訂單安全的同步到訂單主庫中。
訂單命名規(guī)定唯一性
這個大家都明白,主要保證訂單號不重復(fù)。
安全性
訂單編號不能透露你公司的真實運營信息,比如你的訂單就是流水號的話,那么別人就可以從訂單號推測出你公司的整體運營概括了。所以訂單編碼必須是除了你們公司少部分人外,其他人基本看不懂的??梢詤⒖季〇|和淘寶的編碼規(guī)則。
不能使用大規(guī)模隨機碼
因為大規(guī)模的隨機碼隨機生成,因為本身就沒有意義所以無所謂泄密了。但是事實上這種編碼規(guī)則在實現(xiàn)上會有很大問題的。隨機碼滿足第二點安全性要求,為了滿足唯一性,那就得在生成隨機碼的時候?qū)Ρ葰v史數(shù)據(jù)是否有重復(fù),如果你的訂單數(shù)量到達了十萬次,你每次生成訂單編碼時就得對比十萬條歷史數(shù)據(jù)。
隨機碼就不能在編碼中使用了嗎?小規(guī)模的隨機碼是可以使用的,比如2~3位,這種隨機碼一般都是和流水號等結(jié)合使用,主要作用是為了隱藏流水號的真實數(shù)據(jù)而進行使用的。
防止并發(fā)
主要針對編碼中有時間的設(shè)定。
控制位數(shù)
訂單號的作用就是便于查詢。一般正常使用場景應(yīng)該是訂單出異狀或者退貨的時候,用戶將訂單號報給客服,由客服進行查詢。所以一般在10~15位為好。目前京東11位,淘寶16位。
怎么保證訂單號的唯一性訂單號命名規(guī)則來生成
比如“業(yè)務(wù)編碼 + 時間戳 + 機器編號[前4位] + 隨機4位數(shù) + 毫秒數(shù)”。
說明:業(yè)務(wù)編碼(OrderType: Web=1 CallCenter=2 Wap=3) 機器編號(用來表示由那臺服務(wù)器生成的訂單)
偽代碼如下:
缺點:這種方式在高并發(fā)下會頻繁更新訂單量記錄表,很容易產(chǎn)生鎖表。但是鎖表問題也是可以解決的,加一層緩存。
全局訂單號數(shù)據(jù)池來生成
數(shù)據(jù)庫創(chuàng)建一個訂單號數(shù)據(jù)庫表(order_id_generator);利用python腳本生成一批訂單號,將這批訂單號存入到order_id_generator表中。生成訂單時,會首先調(diào)用事務(wù)GET_ORDER_ID_FOR_REGISTER,獲得當前訂單號,再生成訂單。這樣就保證了子庫訂單號不會重復(fù)。
數(shù)據(jù)庫代碼如下:
偽代碼如下:
總結(jié)
訂單號的生成方案,需要根據(jù)目前的訂單量而定;因為各種方案都有各自的使用場景。
網(wǎng)站名稱:mysql訂單號怎么生成 表格的訂單號怎么自動生成
轉(zhuǎn)載源于:http://www.dlmjj.cn/article/hhcjpj.html


咨詢
建站咨詢
