1. 程式人生 > >mysql實現唯一序列號

mysql實現唯一序列號

需要用到事務處理和儲存過程。

不具備這方面基礎的,要看一眼。一眼就可以。

delimiter //
create procedure dede(in p_in int)
begin
     declare v_cnt int;
declare v_timestr int;
declare rowcount bigint;
set v_timestr = DATE_FORMAT(NOW(),'%Y%m%d');
select round(rand()*100,0)+1 into v_cnt;
start transaction;
 update order_seq set order_sn = order_sn+v_cnt where timestr=v_timestr;
 IF ROW_COUNT()=0 THEN
 	INSERT INTO order_seq(timestr, order_sn)values(v_timestr, v_cnt);
 END IF;
 	SELECT CONCAT(v_timestr, LPAD(order_sn,7,0)) AS order_sn
 		FROM order_seq WHERE timestr=v_timestr;
 COMMIT;
end;
//
delimiter ;

create table order_seq(TIMEstr int, order_sn int)

其中,第一個delimiter用於聲明後面//符號。這樣儲存過程裡面的;就不會被當做sql語言斷句處理語句了。

最後的delimiter ;用於宣告斷句還是用;。

一定要記得中間有個空格啊。

儲存過程來自於慕課網的mysql開發技巧課程。