zoukankan      html  css  js  c++  java
  • Mysql存储过程 —— SEQUENCE的实现

    http://blog.csdn.net/crazylaa/article/details/5368447

    创建sql语句:

    DROP TABLE IF EXISTS sequence;

    -- 建sequence表,指定seq列为无符号大整型,可支持无符号值:0(default)到18446744073709551615(0到2^64–1)。
    CREATE TABLE sequence (
    name VARCHAR(50) NOT NULL,
    current_value BIGINT UNSIGNED NOT NULL DEFAULT 0,
    increment INT NOT NULL DEFAULT 1,
    PRIMARY KEY (name) -- 不允许重复seq的存在。
    ) ENGINE=InnoDB;


    DELIMITER /

    DROP FUNCTION IF EXISTS currval /

    CREATE FUNCTION currval(seq_name VARCHAR(50))
    RETURNS BIGINT
    BEGIN
    DECLARE value BIGINT;
    SELECT current_value INTO value
    FROM sequence
    WHERE upper(name) = upper(seq_name); -- 大小写不区分.
    RETURN value;
    END;
    /

    DELIMITER ;


    DELIMITER /

    DROP FUNCTION IF EXISTS nextval /

    CREATE FUNCTION nextval (seq_name VARCHAR(50))
    RETURNS BIGINT
    BEGIN
    DECLARE value BIGINT;
    UPDATE sequence
    SET current_value = current_value + increment
    WHERE upper(name) = upper(seq_name);
    RETURN currval(seq_name);
    END;
    /

    DELIMITER ;

    DELIMITER /

    DROP FUNCTION IF EXISTS setval /

    CREATE FUNCTION setval (seq_name VARCHAR(50), value BIGINT)
    RETURNS BIGINT
    BEGIN
    UPDATE sequence
    SET current_value = value
    WHERE upper(name) = upper(seq_name);
    RETURN currval(seq_name);
    END;
    /

    DELIMITER ;

    测试demo:

    创建序列,往sequence表插入值即可:
    mysql> insert into sequence set name='myseq';
    查看当前已建序列:
    mysql> select * from sequence;
    +-------+---------------+-----------+
    | name | current_value | increment |
    +-------+---------------+-----------+
    | myseq | 0 | 1 |
    +-------+---------------+-----------+
    1 row in set (0.00 sec)
    获得序列的下一个值,第一次使用,因此值为1:
    mysql> select nextval('myseq');
    +------------------+
    | nextval('myseq') |
    +------------------+
    | 1 |
    +------------------+
    1 row in set (0.00 sec)

  • 相关阅读:
    优酷视频下载,优酷真实地址解析
    vim配置入门,到豪华版vim配置
    python字典实现三级菜单
    python 购物车
    来到博客园的第一天
    python urllib模块使用详解
    ubutun升级命令
    SQL注入笔记
    Ajax_showHint() 函数
    轮播图中遇到的问题
  • 原文地址:https://www.cnblogs.com/buoge/p/4165629.html
Copyright © 2011-2022 走看看