Foreword
The current database is: mysql
due mysql and oracle are not the same, do not support direct sequence, so you need to create a table to simulate the sequence of functions on the grounds sql statement is as follows:
step
1. Create a sequence table
CREATE TABLE `sequence` ( name` ` VARCHAR ( 50 ) the COLLATE utf8_bin the NOT NULL the COMMENT ' name sequence ' , current_value` ` int ( . 11 ) the NOT NULL the COMMENT ' current value of the sequence ' , increment` ` int ( . 11 ) the NOT NULL the DEFAULT ' . 1 ' the COMMENT ' from the value sequence ' , a PRIMARY KEY (` name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
2. Create function takes the current value
DROP FUNCTION IF EXISTS currval; DELIMITER $ CREATE FUNCTION currval (seq_name VARCHAR(50)) 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 $ DELIMITER ;
3. Create a value function Remove
DROP FUNCTION IF EXISTS nextval; DELIMITER $ CREATE FUNCTION nextval (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(seq_name); END $ DELIMITER ;
4. Create a function to update the current value
DROP FUNCTION IF EXISTS setval; DELIMITER $ CREATE FUNCTION setval (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(seq_name); END $ DELIMITER ;
Database structure
transfer
The INSERT the INTO sequence the VALUES ( ' testSeq ' , 0 , . 1 ); - adding a sequence name and the initial value, and from an increase of The SELECT SETVAL ( ' testSeq ' , 10 ); - setting an initial value of the specified sequence The SELECT CURRVAL ( ' testSeq ' ); - query the current value of the specified sequence The SELECT a NEXTVAL ( ' testSeq ' ); - Query sequence designated next value