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开发技巧课程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值