zoukankan      html  css  js  c++  java
  • 创建自定义序列号

    1.由于mysql和oracle不同不能直接创建序列号所以我们存在一个表里,用来获取
    DROP TABLE
        IF EXISTS sequence;
    CREATE TABLE
        sequence
        (
            name VARCHAR(50) NOT NULL,
            current_value BIGINT NOT NULL,
            increment INT NOT NULL DEFAULT 1,
            PRIMARY KEY (name)
        )
        ENGINE=InnoDB;
    插入序列的名字和编号
    INSERT INTO sequence VALUES ('SEQ_TRZ_MEMBER_NO',10000000000,1);
    在表里如图所示
    2.创建currval 函数
    此函数为获取当前值
    DROP FUNCTION IF EXISTS currval;  
    DELIMITER $$
    CREATE FUNCTION currval (seq_name VARCHAR(50))  
    RETURNS BIGINT(20)  
    BEGIN  
      DECLARE value BIGINT ;  
      SET value = 0;  
      SELECT current_value into value
      FROM sequence  
      WHERE name = seq_name;  
      RETURN value;  
    END $$
    DELIMITER ;
     
    执行
    select currval('SEQ_TRZ_MEMBER_NO')
     
    3.创建nextval函数
    其实就是在当前值得基础上加上步长做更新
    DROP FUNCTION IF EXISTS nextval;  
    DELIMITER $$  
    CREATE FUNCTION nextval (seq_name VARCHAR(50))  
    RETURNS BIGINT  
    CONTAINS SQL  
    BEGIN  
       UPDATE sequence  
       SET          current_value = current_value + increment  
       WHERE name = seq_name;  
       RETURN currval(seq_name);  
    END $$  
    DELIMITER ;
     
     
    执行
    select nextval('SEQ_TRZ_MEMBER_NO')
     
     
    注意:
    如果有报错,可以设置一下
    set global log_bin_trust_function_creators=TRUE;
     
  • 相关阅读:
    【杭电ACM】1.2.4 Financial Management
    【杭电ACM】1.2.1 Biker's Trip Odometer
    【杭电ACM】1097 A hard puzzle
    【西交ACM】100 A+B problem
    【杭电ACM】1.2.2 Climbing Worm
    【杭电ACM】1004 Let the Balloon Rise
    【杭电ACM】1.2.3 hide handkerchief
    【杭电ACM】1.2.5 find your present (2)
    【杭电ACM】1.2.6 decimal system
    【西交ACM】298 第N大的数
  • 原文地址:https://www.cnblogs.com/qixiajue1993/p/11824490.html
Copyright © 2011-2022 走看看