用Mysql模拟Oracle序列自增

    科技2026-06-05  8

    1、创建序列化表sequence

    这里介绍下,seq_name为序列名称,current_val为当前值(初始化时可填0)increment_val为增加的跨度。

    2、创建currval函数用于获取序列当前值 

    DELIMITER $$ USE `oasystem`$$ DROP FUNCTION IF EXISTS `currval`$$ CREATE DEFINER=`root`@`localhost` FUNCTION `currval`(v_seq_name VARCHAR(50)) RETURNS INT(11) BEGIN DECLARE VALUE INTEGER; SET VALUE = 0; SELECT current_val INTO VALUE FROM sequence WHERE seq_name = v_seq_name; RETURN VALUE; END$$ DELIMITER ;

    3、创建nextval函数,传入序列名称后调用该函数序列值将自增

    DELIMITER $$ USE `oasystem`$$ DROP FUNCTION IF EXISTS `nextval`$$ CREATE DEFINER=`root`@`localhost` FUNCTION `nextval`(v_seq_name VARCHAR(50)) RETURNS INT(100) BEGIN UPDATE sequence SET current_val = current_val + increment_val WHERE seq_name = v_seq_name; RETURN currval(v_seq_name); END$$ DELIMITER ;

    4、测试 

    在数据库表sequence中录入一个序列名称为test的序列,初始值为0,增值为1。

    执行sql语句后,返回自增值。

    查看 sequence表,发现序列当前值已经自增了。

    到此为止,模拟oracle序列已经完成了。

     

     

     

     

    Processed: 0.013, SQL: 9