mysql實現自增序列

2021-10-01 14:37:37 字數 1988 閱讀 9912

create table `sequence` (

`name` varchar(50) collate utf8_bin not null comment '序列的名字',

`current_value` int(11) not null comment '序列的當前值',

`increment` int(11) not null default '1' comment '序列的自增值',

primary key (`name`)

) engine=innodb default charset=utf8 collate=utf8_bin;

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 ;

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 ;

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 ;

insert into sequence values ('testseq', 0, 1);-- 新增乙個sequence名稱和初始值,以及自增幅度

select setval('testseq', 10);-- 設定指定sequence的初始值

select currval('testseq');-- 查詢指定sequence的當前值

select nextval('testseq');-- 查詢指定sequence的下乙個值

mysql 實現id自增序列 mysql自增id列

如果希望在每次插入新記錄時,自動地建立主鍵欄位的值。可以在表中建立乙個 auto increment 字段。mysql 使用 auto increment 關鍵字來執行 auto increment 任務。預設地auto increment 的開始值是 1,每條新記錄遞增 1。主鍵又稱主關鍵字,主關...

MySQL 自增序列

5.7.23 select version 非主鍵形式的自增欄位 create table test3 id int auto increment not null,str varchar 2 key id 自增預設從1開始 truncat後,自增序列重新開始 設定自增開始值 同時 建立自增序列字段...

MySQL建立自增序列(Sequence)

點關注不迷路,歡迎再訪!精簡部落格內容,盡量已行業術語來分享。努力做到對每一位認可自己的讀者負責。幫助別人的同時更是豐富自己的良機。mysql不支援直接的sequence,所以需要建立一張table來模擬sequence的功能 create table uuser sequence name var...