mysql函数实现oracle的序列

1、创建一张伪序列表

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)
);

2、创建一个获取当前数据的函数(from 后面跟的表和上面创建的一致)

create function currval(v_seq_name VARCHAR(50))
    returns integer(11)
begin
    declare value integer;
    set value = 0;
  select current_val into value  from sequence where seq_name = v_seq_name;
    return value;
end;

3、创建一个获取下一条数据的函数(from 后面跟的表和上面创建的一致)

create function nextval (v_seq_name VARCHAR(50)) 
   returns integer(11)
begin
   update sequence set current_val = current_val + increment_val  where seq_name = v_seq_name;
      return currval(v_seq_name);
end;

4、插入一条数据

INSERT INTO sequence VALUES ('var_cash', '0', '1');

5、调用上面的函数获取相关的值

select nextval('var_cash');

select currval('var_cash');

参考:https://blog.csdn.net/sinat_19351993/article/details/47169789

posted @ 2021-08-17 10:26  品书读茶  阅读(82)  评论(0编辑  收藏  举报