欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

mysql中怎么生成全局唯一序列

MySQL中怎么生成全局唯一序列,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

創(chuàng)新互聯公司:成立于2013年為各行業(yè)開拓出企業(yè)自己的“網站建設”服務,為1000多家公司企業(yè)提供了專業(yè)的成都網站設計、成都網站建設、網頁設計和網站推廣服務, 按需定制由設計師親自精心設計,設計的效果完全按照客戶的要求,并適當的提出合理的建議,擁有的視覺效果,策劃師分析客戶的同行競爭對手,根據客戶的實際情況給出合理的網站構架,制作客戶同行業(yè)具有領先地位的。

  • 業(yè)務場景:訂單系統中生成訂單號,按照每天從1開始生成

  • 大致思路是:將生成序列的步驟放到mysql的函數中實現,java中負責調用mysql函數獲取序列,代碼中調用時需要保證同一時間只有一次調用,所以代碼中首先會將獲取序列服務類定義成單利的服務對象,方法中采用同步關鍵字。使用jetty測試工具,在并發(fā)一萬情況下調用改序列生成的函數無問題,無重號。

  • 參考代碼

  • Mysql腳本


DROP TABLE IF EXISTS tbl_sequence; CREATE TABLE tbl_sequence ( name varchar(40) CHARACTER SET utf8 NOT NULL COMMENT '序列名稱', current_value int(15) NOT NULL COMMENT '當前值' ) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO tbl_sequence VALUES ('test', '38');

set global log_bin_trust_function_creators=1;

DELIMITER $$
DROP FUNCTION IF EXISTS currval$$
CREATE FUNCTION currval(seq_name VARCHAR(50)) RETURNS varchar(40) BEGIN DECLARE valuep VARCHAR(40); if 0=(SELECT count(name) FROM tbl_sequence WHERE NAME=seq_name) then INSERT INTO tbl_sequence (name, current_value) VALUES (seq_name, '1'); end if; SELECT current_value INTO valuep FROM tbl_sequence WHERE NAME = seq_name; UPDATE tbl_sequence SET current_value = current_value + 1 WHERE NAME = seq_name; RETURN valuep; END $$
DELIMITER;


  • Java代碼


a) Sping中service使用采用單例模式 @Service("serialNumberUtil") @Scope("singleton") public class SerialNumberUtil {

b) 獲取方法中采用同步關鍵字 public synchronized String getOrderNumber(String pix,String dataStr) { return sequenceDao.getOrderNumber(pix,dataStr); }

看完上述內容,你們掌握mysql中怎么生成全局唯一序列的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注創(chuàng)新互聯行業(yè)資訊頻道,感謝各位的閱讀!

本文名稱:mysql中怎么生成全局唯一序列
鏈接地址:http://www.chinadenli.net/article48/geiphp.html

成都網站建設公司_創(chuàng)新互聯,為您提供全網營銷推廣虛擬主機網站導航品牌網站設計ChatGPT定制網站

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

營銷型網站建設