CREATE TABLE `t_sequence` (
`seq_name` VARCHAR(200) NOT NULL COLLATE 'utf8_general_ci',
`val` BIGINT(20) NOT NULL DEFAULT '0',
`increment` INT(11) NOT NULL DEFAULT '1',
`update_time` DATETIME(3) NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
PRIMARY KEY (`seq_name`) USING BTREE
) ENGINE=InnoDB;
## 创建函数
DROP FUNCTION IF EXISTS f_nextval;
DELIMITER $
CREATE FUNCTION nextval (p_seq_name VARCHAR(50))
RETURNS INTEGER
LANGUAGE SQL
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE i_val INTEGER;
UPDATE t_sequence
SET `val` = LAST_INSERT_ID(`val` + increment)
WHERE `seq_name` = p_seq_name;
SET i_val = 0;
SELECT LAST_INSERT_ID() INTO i_val FROM DUAL;
RETURN i_val;
END
$
DELIMITER ;