原文

mysql主键不用自增数字的时候,可以参考如下方式,我抄来的。

-- 创建公共的序列表
DROP TABLE IF EXISTS t_common_sequence;
CREATE TABLE t_common_sequence (
seq_name VARCHAR(100) NOT NULL COMMENT '序列名称',
current_val INT NOT NULL COMMENT '当前值',
increment_val INT NOT NULL DEFAULT '' COMMENT '增长值 默认1',
PRIMARY KEY(seq_name)
)
ENGINE = InnoDB
CHARACTER SET = utf8
COMMENT='公共的序列表'; -- 创建函数,获取指定名称的 当前序列值
DELIMITER //
DROP FUNCTION IF EXISTS f_currval;
CREATE FUNCTION f_currval(v_seq_name VARCHAR(100))
RETURNS INT
BEGIN
DECLARE value INT;
SET value = 0;
SELECT current_val into value
FROM t_common_sequence
WHERE seq_name = v_seq_name;
RETURN value;
END;
//
DELIMITER ; -- 创建函数,获取指定名称的 下一个序列值
DELIMITER //
DROP FUNCTION IF EXISTS f_nextval;
CREATE FUNCTION f_nextval(v_seq_name VARCHAR(100))
RETURNS INT
BEGIN
UPDATE t_common_sequence
SET current_val = current_val + increment_val
WHERE seq_name = v_seq_name;
RETURN f_currval(v_seq_name);
END;
//
DELIMITER ; -- 创建函数,修改指定名称的序列值,并返回
DELIMITER //
DROP FUNCTION IF EXISTS f_setval;
CREATE FUNCTION f_setval(v_seq_name VARCHAR(100), v_new_val INT)
RETURNS INT
BEGIN
UPDATE t_common_sequence
SET current_val = v_new_val
WHERE seq_name = v_seq_name;
RETURN f_currval(v_seq_name);
END;
//
DELIMITER ; insert into t_common_sequence(seq_name,current_val,increment_val) values('seq_job',1,1); -- 获取当前序列
select f_currval('seq_job'); -- 获取下一个序列
select f_nextval('seq_job'); -- 设置序列值,并返回
select f_setval('seq_job',10); select * from t_common_sequence;

mysql#自定义序列的更多相关文章

  1. MYSQL 自定义序列函数

    代码如下: DROP TABLE SEQNUM; -- 创建序列表 CREATE TABLE SEQNUM( ID BIGINT ); -- 插入初识值 insert INTO SEQNUM valu ...

  2. mysql 自定义函数

    原文:http://www.cnblogs.com/zhangminghui/p/4113160.html 引言 MySQL本身提供了内置函数,这些函数的存在给我们日常的开发和数据操作带来了很大的便利 ...

  3. mysql 自定义排序顺序

    mysql 自定义排序顺序 实例如:在sql语句中加入ORDER BY FIELD(status,3,4,0,2,1)语句可定义排序顺序 SELECT tsdvoucher0_.VOUCHER_ID ...

  4. python魔法方法-自定义序列

    自定义序列的相关魔法方法允许我们自己创建的类拥有序列的特性,让其使用起来就像 python 的内置序列(dict,tuple,list,string等). 如果要实现这个功能,就要遵循 python ...

  5. mysql自定义函数并在存储过程中调用,生成一千万条数据

    mysql 自定义函数,生成 n 个字符长度的随机字符串 -- sql function delimiter $$ create function rand_str(n int) returns VA ...

  6. MySQL 自定义函数CREATE FUNCTION实例

    分享一个MySQL 自定义函数CREATE FUNCTION的实例.mysql> delimiter $$mysql> CREATE FUNCTION myFunction-> (i ...

  7. Mysql的序列

    Mysql的序列 Mysql自带的序列:字段设置为int,属性里面选上“自动增长”即可: 在插入数据的时候可以不插入该字段的值,mysql会自动处理:

  8. python魔法方法-自定义序列详解

    自定义序列的相关魔法方法允许我们自己创建的类拥有序列的特性,让其使用起来就像 python 的内置序列(dict,tuple,list,string等). 如果要实现这个功能,就要遵循 python ...

  9. MySQL自定义函数(四十六)

    MySQL自定义函数 一.什么是MYSQL自定义函数? mysql当中的自定义函数,我们简称为UDF,它实际上是一种对MySQL扩展的途径,其用法与内置函数相同. 二.自定义函数应该具备哪些条件? 我 ...

随机推荐

  1. WinForm开发(2)——DataGridView控件(2)——C# dataGridview控件,怎么获取行数

    dataGridView1.Rows.Count;//所有行数dataGridView1.RowCount;//可见行数

  2. Latin-1字符集

    ISO Latin-1字符集是Unicode字符集的一个子集,对应于IE4+中Unicode字符指令表的前256个条目.下面表格中详细提供了每个字符及字符的十进制编码和HTML已命名实体.其中Unic ...

  3. 【剑指Offer面试编程题】题目1509:树中两个结点的最低公共祖先--九度OJ

    题目描述: 给定一棵树,同时给出树中的两个结点,求它们的最低公共祖先. 输入: 输入可能包含多个测试样例. 对于每个测试案例,输入的第一行为一个数n(0<n<1000),代表测试样例的个数 ...

  4. JavaWeb项目音频资源播放解决方案

    一.方式1:登陆系统后进行播放,即在浏览器端 需要在JSP页面编写相关代码 <div id="midea" style="display: none;"& ...

  5. eclipse 热部署

    参考: http://blog.sina.com.cn/s/blog_be8b002e0101koql.html

  6. webpack原理类型问题

    1.webpack底层原理 (实现一个webpack) 步骤:1.拿到入口文件的代码并读出来转化为js对象(抽象语法术parser)2.拿到所有模块的依赖 ‘./message.js’,放进数组中 引 ...

  7. 中国5G,如何避免重复投资?

    前不久,工信部正式向中国移动.中国联通.中国电信发放5G商用牌照,此举意味着中国提前启动5G商用计划,随之而来的,将会是运营商.设备商大规模的投资.相关数据机构预测,三大运营商2019年预计会投入30 ...

  8. springMVC的 Converter转换器 和 Formatter

    Converter转换器 spring的Converter是可以将一种类型转换成另一种类型的一个对象, 自定义Converter需要实现Converter接口 日期转换器 import java.te ...

  9. W - Prime Time 素数判断+前缀和

    W - Prime Time 题意:用公式n*n+n+41,判断素数的百分比 #include<iostream> #include<algorithm> #include&l ...

  10. Python函数-2 匿名函数

    匿名函数 当我们在创建函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便.这省去了我们挖空心思为函数命名的麻烦,也能少写不少代码,很多编程语言都提供这一特性. Python语言使用lamb ...