mysql 自增長通用單號生成

2021-08-31 23:52:29 字數 2366 閱讀 7656

平時工作中我們經常會生成各種單號,大部分的單號都是日期加上自增長的序列如:vc20181115001,vc201811151525001,常用格式: 字母 + yyyymmdd + 001,字母 + yyyymmddhhmmss + 001等等。

我們可以使用mysql解決這個問題,使用儲存過程呼叫,適合普通單號生成,不適合高併發的單號生成。

name 欄位為我們設定的字母標識,value 欄位為當前的序列號,step為每次增長的數字大小,start為起始數字

end儲存過程乙個入參 name,乙個出參n

首先根據傳入的引數name查詢出當前的序列值value,做個判斷如果這個value值等於0則表示是第一次生成序列號,則預設即將生成的序列號為1,自增長為1,如果value值不等0則表示不是第一次生成序列號,則更新當前獲取的序列號value值加1,最後在返回生成的序列號。

我們可以用mybatis**生成器生成表 sys_sequence 的**,然後放進專案裡,這裡步驟省略。

sequenceservice**:

@service

public class sequenceservice

}

@repository

int getseq(sequence sequence);

}

,#)}

sequence 物件**:

public class sequence implements serializable
我們在需要生成單號的地方呼叫 sequenceservice的getseq方法即可,注意這個方法返回的只是乙個當前的序列號數字如5,如果想要005這樣的就需要我們再次拼接一下。

新建乙個 certificationservice **:

@service

public class certificationservice

/*** 獲取編碼,格式如 vc201811151525001

* @return

*/public string getseqdatetimeno()

}

mysql 建立自增長訂單號

因為最近做專案需要,需要使用到,自定義的不重複的自增長的訂單號,在網上找了資料然後又加入了自己的修改,做成的mysql生成訂單號的儲存過程。drop procedure pp create procedure proc get no tname varchar 50 cname varchar 50...

mysql 去除列的自增長 mysql自增長列

自增長列必須是索引列,否則無法建立成功表,對myisma和innodb都一樣 localhost testdb root create table test5 id int auto increment,name varchar 10 engine innodb error 1075 42000 l...

mysql 主鍵自增長

mysql 資料庫表主鍵自增長的sql語句 1 不控制主鍵的起點 create table emb t dictbustype emb c bustypeid int not null auto increment,emb c bustypeenname varchar 255 not null,e...