1. 程式人生 > >MySQL實現序列(Sequence)效果

MySQL實現序列(Sequence)效果

由於mysql不帶sequence,所以要手寫的,建立一張儲存sequence的表(tb_sequence),然後手動插入一條資料 ,最後自定義一個函式來處理要增長的值。

1、建立表tb_sequence,用來存放sequence值:

create table tb_sequence(name varchar(50) not null,current_value int not null,_increment int not null default 1, primary key(name));   

2、手動插入資料:

insert into tb_sequence values('userid'
,100,2);

3、定義函式 _nextval:

DELIMITER //  
create function _nextval(n varchar(50)) returns integer   
begin  
declare _cur int;  
set _cur=(select current_value from tb_sequence where name= n);  
update tb_sequence  
 set current_value = _cur + _increment  
 where name=n ;  
return _cur;  
end;  
//  

說明:delimiter // —->定義語句結束符。其他的程式碼 自己看吧。
4、恢復預設的語句結束符:(可以省略但是結束符必須用// ,為了方便還是設定回來。)

DELIMITER ;  

5、檢驗結果
多次執行以下語句:

select _nextval('userid');  

結果顯示:

mysql> select _nextval('userid');  
+--------------------+  
| _nextval('userid') |  
+--------------------+  
|                102 |  
+--------------------+  
1 row in set (0.00 sec)  

mysql> select _nextval('userid'
); +--------------------+ | _nextval('userid') | +--------------------+ | 104 | +--------------------+ 1 row in set (0.00 sec) mysql> select _nextval('userid'); +--------------------+ | _nextval('userid') | +--------------------+ | 106 | +--------------------+ 1 row in set (0.00 sec)