mysql實現唯一序列號
阿新 • • 發佈:2019-02-10
需要用到事務處理和儲存過程。
不具備這方面基礎的,要看一眼。一眼就可以。
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開發技巧課程。