解决一些mysql高并发的订单id生成

订单场景:当bool_t=0则未下单,就不需要订单号,bool_t=1时,表示下单,则有订单号

第一步:我们随便创建一个临时表dd(瞎写的)我们不管

下面字段有说明(comment)

#测试表
CREATE TABLE dd(
ord_num VARCHAR(15) COMMENT "订单号长度15位",
bool_t INT COMMENT "用于判断是否为1",
c1 VARCHAR(30) COMMENT "随意字段"
);

第二步:创建触发器

#创建触发器
DELIMITER //
CREATE TRIGGER t_l
BEFORE INSERT ON dd
FOR EACH ROW
BEGIN
            #用于计数 @n
            SELECT  COUNT(*)  into @n from dd where LENGTH(ord_num) >0;
            IF new.bool_t=1
            THEN SET new.ord_num=DATE_FORMAT(CURRENT_DATE,"%Y%m%d")*10000000+@n+1;
            END IF;
END//
DELIMITER ;

=========================================================================

OK以上我们的任务结束了:

下面用于测试:

#测试语句
INSERT INTO dd(bool_t,c1) VALUES (0,"aaa");
INSERT INTO dd(bool_t,c1) VALUES (1,"bbb");
INSERT INTO dd(bool_t,c1) VALUES (1,"ccc");
INSERT INTO dd(bool_t,c1) VALUES (0,"ddd");
INSERT INTO dd(bool_t,c1) VALUES (1,"fff");

=========================================================================

先传入0则id显示空,在写入1显示当前时间**10000000+1依次类推(我们只添加bool_t等于1 的值)

 ok结束===>哥们自行根据具体需求更改(有问题的偷偷找我说一下,要不然我多没得面子啊)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值