mysql创建序列使用总结:
先建一个序列表,如下:
CREATE TABLE IF NOT EXISTS `sequence` (
`name` varchar(50) NOT NULL,
`current_value` int(11) NOT NULL,
`increment` int(11) NOT NULL DEFAULT '1'
) ENGINE=MyISAM DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC COMMENT='序列表,命名s_[table_name]';
INSERT INTO `sequence` (`name`, `current_value`, `increment`) VALUES
('s_blog_account', 0, 1)
设置当前值:
DROP FUNCTION IF EXISTS `currval`;
DELIMITER //
CREATE FUNCTION `currval`(seq_name VARCHAR(50)) RETURNS int(11)
READS SQL DATA
DETERMINISTIC
BEGIN
DECLARE VALUE INTEGER;
SET VALUE = 0;
SELECT current_value INTO VALUE FROM sequence WHERE NAME = seq_name;
RETURN VALUE;
END//
DELIMITER ;
当前值自增:
DROP FUNCTION IF EXISTS `nextval`;
DELIMITER //
CREATE FUNCTION `nextval`(seq_name VARCHAR(50)) RETURNS int(11)
DETERMINISTIC
BEGIN
UPDATE sequence SET current_value = current_value + increment WHERE NAME = seq_name;
RETURN currval(seq_name);
END//
DELIMITER ;
最后使用select nextval("s_blog_account")即可得到下一个值
#创建完成执行查询
select nextval('s_blog_account');
当需要对复杂字段(例如一些ZYF20190516000000000001)新增时,新增一条数据在现有格式上面+1操作(ZYF20190516000000000002),我们可以在后台执行:固定字段+时间+自增ID进行拼接(该字段为例)。