前言:
而今同学们对“mysql如何创建sequence”可能比较注重,兄弟们都想要知道一些“mysql如何创建sequence”的相关知识。那么小编在网络上搜集了一些有关“mysql如何创建sequence””的相关文章,希望咱们能喜欢,各位老铁们快快来了解一下吧!1、定义一个表sequence
#字段seq_name表示序列名,
#字段current_val 表示对应序列的当前值,
#字段increment_val表示对应序列的每次增加的值,
CREATE TABLE `sequence` (`seq_name` VARCHAR(50) NOT NULL,`current_val` INTEGER NOT NULL,`increment_val` INTEGER NOT NULL DEFAULT 1,PRIMARY KEY USING BTREE (`seq_name`))
2、定义一个函数next_val
入参sequence_name,序列名
CREATE DEFINER = 'root'@'localhost' FUNCTION `next_val`( `sequence_name` VARCHAR(64) ) RETURNS INTEGER DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT ''BEGIN UPDATE sequence t, (SELECT @current_val := current_val, @increment_val := increment_val FROM sequence t2 WHERE t2.seq_name=sequence_name) t3 SET t.current_val = t.current_val + t.increment_val WHERE t.seq_name=sequence_name AND @current_val=t.current_val; RETURN @current_val + @increment_val; END;
3、举例获取序列A00001的下个值
首先在表sequence里增加初始化数据如:
seq_name: A00001
current_val: 1
increment_val: 1
命令行调用函数:
jdbc调用函数代码段:
String sql = "{? = call next_val(?)}"; Connection conn = getDataSource().getConnection();; CallableStatement pstat = conn.prepareCall(sql); pstat.registerOutParameter(1, Types.BIGINT); pstat.setString(2, "A00001"); pstat.execute(); long nextVal = pstat.getLong(1);
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #mysql如何创建sequence