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;
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中怎么生成全局唯一序列的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注天达云行业资讯频道,感谢各位的阅读!