侧边栏壁纸
博主头像
Curllen博主等级

早上的云霞好美~

  • 累计撰写 12 篇文章
  • 累计创建 18 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

MySQL实现类似Oracle序列_sequence

Curllen
2020-10-15 / 2 评论 / 2 点赞 / 2,394 阅读 / 890 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-02-08,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
  1. 创建一张sequence表,并给定初始值
drop table if exists sequence;  
create table sequence (  
  seq_name    VARCHAR(50) NOT NULL, -- 序列名称  
  current_val   INT     NOT NULL, -- 当前值  
  increment_val  INT     NOT NULL  DEFAULT 1, -- 步长(跨度)  
  PRIMARY KEY (seq_name)  
);

INSERT INTO sequence (seq_name, current_val, increment_val) VALUES ('test', '0', '1');

2.创建一个函数,用于更新并获取sequence表中的当前值

create function currval(v_seq_name VARCHAR(50))  
returns integer 
begin 
	declare value integer;  
	set value = 0;  
  update sequence 
  set current_val = (current_val+increment_val)  
  where seq_name = v_seq_name; -- 先更新当前值
  select current_val into value  
	from sequence 
	where seq_name = v_seq_name;   -- 在获取当前值
  return value;
end;

3.使用序列

SELECT currval('test');

image.png

2

评论区