MySQL自增序列-亲试ok

mac2022-06-30  122

#1.创建sequence表,公共的DROP TABLE IF EXISTS sequence; CREATE TABLE sequence (      name VARCHAR(30) NOT NULL,    #序列名                    current_value INT NOT NULL,   #当前值     increment INT NOT NULL DEFAULT 1,  #增值       PRIMARY KEY (name) ) ENGINE=InnoDB; #2.创建取当前值的函数DROP FUNCTION IF EXISTS currval_fphm; DELIMITER $ CREATE FUNCTION currval_fphm (seq_name VARCHAR(30))                 RETURNS INTEGER     LANGUAGE SQL      DETERMINISTIC      CONTAINS SQL      SQL SECURITY DEFINER      COMMENT ''BEGIN     DECLARE value INTEGER;      SET value = 0;      SELECT current_value INTO value           FROM sequence          WHERE name = seq_name;      RETURN value; END ;#3.创建取下一值的函数DROP FUNCTION IF EXISTS nextval_fphm; DELIMITER $ CREATE FUNCTION nextval_fphm (seq_name VARCHAR(50))      RETURNS INTEGER     LANGUAGE SQL      DETERMINISTIC      CONTAINS SQL      SQL SECURITY DEFINER      COMMENT ''BEGIN     UPDATE sequence          SET current_value = current_value + increment           WHERE name = seq_name;      RETURN currval_fphm(seq_name); END ;#4.创建更新值的函数DROP FUNCTION IF EXISTS setval_fphm; DELIMITER $ CREATE FUNCTION setval_fphm (seq_name VARCHAR(50), value INTEGER)      RETURNS INTEGER     LANGUAGE SQL      DETERMINISTIC      CONTAINS SQL      SQL SECURITY DEFINER      COMMENT ''BEGIN     UPDATE sequence          SET current_value = value           WHERE name = seq_name;      RETURN currval_fphm(seq_name); END; #插入基本数据INSERT INTO sequence VALUES ('item_fphm', 0, 1);  #更新序列的当前值SELECT SETVAL_fphm('item_fphm', 10000000);    #使用示例SELECT currval_fphm('item_fphm');                    SELECT nextval_fphm('item_fphm');   select 99999999-nextval_fphm('item_fphm')create table pj_zzspdz_fpmx01 as select * from pj_zzspdz_fpmx where 1=2;日期增量值 为  内总的数据量为 5000w,故外循环5000w/15=3333333

转载于:https://www.cnblogs.com/iyoume2008/p/10096515.html

最新回复(0)