mysql实现sequence-高级篇

-----mysql  创建sequence
-- 创建随机数表
drop table if exists test.sequence_test_hsg; 
create table test.sequence_test_hsg (       
seqname        VARCHAR(50) NOT NULL, -- 序列名称       
currentval     INT         NOT NULL, -- 当前值       
incrementval   INT         NOT NULL    DEFAULT 1, -- 步长(跨度)       
PRIMARY KEY (seqname)) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
-- 插入随机数信息
INSERT INTO test.sequence_test_hsg VALUES ('sq_ryid', '1000000000', '1');
-- 查询
SELECT * FROM test.sequence_test_hsg;
-- 创建获取当前随机数函数
-- DROP  FUNCTION  currval;
DELIMITER $ 
CREATE FUNCTION currval (seq_name VARCHAR(50))
RETURNS INTEGER
BEGIN
  DECLARE current INTEGER;
  SET current = 0;
  SELECT currentval INTO current
  FROM  test.sequence_test_hsg
  WHERE seqname = seq_name;
  RETURN current;
END$ 
DELIMITER ;
-- 取下一个值函数
-- DROP  FUNCTION  nextval;
DELIMITER $  
CREATE FUNCTION nextval (seq_name VARCHAR(50))  
RETURNS INTEGER  
CONTAINS SQL  
BEGIN  
   UPDATE test.sequence_test_hsg  
   SET currentval = currentval + incrementval  
   WHERE seqname = seq_name;  
   RETURN currval(seq_name);  
END$  
DELIMITER ; 
-- 查询
select currval('sq_ryid');
select nextval('sq_ryid');

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值