您的位置:首页 > 数据库 > MySQL

mysql实现唯一序列号

2015-08-02 18:45 555 查看
需要用到事务处理和存储过程。

不具备这方面基础的,要看一眼。一眼就可以。

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开发技巧课程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: