由於mysql不支援sequence,所以從oracle遷移時需要採用自定義sequence的方式來解決。
createtable
seqmysql (
seqname
varchar(50),
`currentvalue`
int(
11),
increment
int(11) default1
)create definer=`mysql`@`%` function `currval`(seq_name
varchar(50
)) returns
int(11)
begin
declare current integer;
set current = 0;
select
currentvalue
into current
from seqmysql
where
seqname = seq_name;
return current;
endcreate definer=`mysql`@`%` function `nextval`(seq_name
varchar(50
)) returns
int(11)
begin
update seqmysql
setcurrentvalue= currentvalue+ increment
where
seqname = seq_name;
return
currval(seq_name);
endcreate definer=`mysql`@`%` function `setval`(seq_name
varchar(50
), value
integer
) returns
int(11)
begin
update seqmysql
setcurrentvalue = value
where
seqname = seq_name;
return
currval(seq_name);
end使用如下方式使用mysql的序列:
--建立乙個序列,起始為1,步長為1
insert
into
seqmysql
values
('my_seq', 1, 1);
--從序列中取出下乙個值
select
nextval
('my_seq')
from dual;
--從序列中取出當前值
select
currval
('my_seq')
from
dual;
--設定序列當前值
select
setval
('my_seq', 5)
from
dual;
mysql實現sequence自增長
1建立表 create table tb sequence seq name varchar 50 not null comment 欄位名稱 min int 11 not null comment 最小值 max int 11 not null comment 最大值 current val in...
MySQL 之自己實現sequence
oracle的sequence是乙個很好的主鍵生成策略,但是mysql並不具有sequence語法,下面在mysql中來模擬實現乙個sequence。1 建一張表e sys sequence用來記錄序列名稱和值 drop table ifexists e sys sequence create ta...
MySQL實現序列(Sequence)效果
mysql實現序列效果 一般使用序列 sequence 來處理主鍵字段,在mysql中是沒有序列的,但是mysql有提供了自增長 increment 來實現類似的目的,但也只是自增,而不能設定步長 開始索引 是否迴圈等,最重要的是一張表只能由乙個字段使用自增,但有的時候我們需要兩個或兩個以上的字段實...