原文
mysql主鍵不用自增數字的時候,可以參考如下方式,我抄來的。
--建立公共的序列表
drop
table
ifexists
t_common_sequence;
create
table
t_common_sequence (
seq_name
varchar(100) not
null comment '
序列名稱',
current_val
intnot
null comment '
當前值'
, increment_val
intnot
null
default'1
' comment '
增長值 預設1',
primary
key(seq_name)
)engine
=innodb
character
set=
utf8
comment='
公共的序列表';
--建立函式,獲取指定名稱的 當前序列值
delimiter //
drop
function
ifexists
f_currval;
create
function f_currval(v_seq_name varchar(100
))returns
intbegin
declare value int;
set value =0;
select current_val into
value
from
t_common_sequence
where seq_name =
v_seq_name;
return
value;
end;
//delimiter ; --
建立函式,獲取指定名稱的 下乙個序列值
delimiter //
drop
function
ifexists
f_nextval;
create
function f_nextval(v_seq_name varchar(100
))returns
intbegin
update
t_common_sequence
set current_val = current_val +
increment_val
where seq_name =
v_seq_name;
return
f_currval(v_seq_name);
end;
//delimiter ; --
建立函式,修改指定名稱的序列值,並返回
delimiter //
drop
function
ifexists
f_setval;
create
function f_setval(v_seq_name varchar(100), v_new_val int
)returns
intbegin
update
t_common_sequence
set current_val =
v_new_val
where seq_name =
v_seq_name;
return
f_currval(v_seq_name);
end;
//delimiter ;
insert
into t_common_sequence(seq_name,current_val,increment_val) values('
seq_job
',1,1);
--獲取當前序列
select f_currval('
seq_job');
--獲取下乙個序列
select f_nextval('
seq_job');
--設定序列值,並返回
select f_setval('
seq_job
',10);
select
*from t_common_sequence;
mysql 自定義自增序列
公司專案需求需要在一張包含自增主鍵的mysql表中,再次增加乙個自增字段,但是mysql只支援一張表乙個自增字段。create table if not exists sequence name varchar 50 not null,current value int 11 not null,in...
Mysql自定義Sequence 實現序列自增功能
create table sequence name varchar 50 collate utf8 bin not null comment 序列的名字 current value int 11 notnull comment 序列的當前值 increment int 11 notnull def...
mysql自定義函式優點 MySQL自定義函式
在使用 mysql 的過程中,mysql 自帶的函式可能完成不了我們的業務需求,這時候就需要自定義函式。自定義函式是一種與儲存過程十分相似的過程式資料庫物件。它與儲存過程一樣,都是由 sql 語句和過程式語句組成的 片段,並且可以被應用程式和其他 sql 語句呼叫。自定義函式與儲存過程之間存在幾點區...