1
2
3
4
5
6
7
|
drop table if
exists sequence ;
create table sequence (
seq_name
VARCHAR (50)
NOT NULL ,
--
序列名稱 current_val
INT NOT NULL ,
--當前值
increment_val
INT NOT NULL DEFAULT 1,
--步長(跨度)
PRIMARY KEY (seq_name)
); |
1
2
3
4
5
6
7
8
9
10
11
|
[sql]
create function currval(v_seq_name
VARCHAR (50))
returns integer begin declare value
integer ;
set value
= 0; select current_value
into value
from sequence where seq_name
= v_seq_name; return value;
end ; |
1
2
3
4
5
6
7
8
9
|
[sql]
create function nextval
(v_seq_name VARCHAR (50))
return integer begin update sequence set current_val
= current_val + increment_val where seq_name
= v_seq_name; return currval(v_seq_name);
end ; |
1
2
3
4
5
6
7
8
|
[sql]
create function setval(v_seq_name
VARCHAR (50),
v_new_val INTEGER )
returns integer begin update sequence set current_val
= v_new_val where seq_name
= v_seq_name; return currval(seq_name); |
DELIMITER $$
create function setval(v_seq_name VARCHAR(50), v_new_val INTEGER)
returns integer
begin
update sequence
set current_val = v_new_val
where seq_name = v_seq_name;
return currval(seq_name);
end $$
DELIMITER $$