【Navicat 如何添加唯一约束】解决:同一时间同一用户仅可写入一条记录

在高并发场景下,用户请求几乎同时到达服务器时,count()方法和实际插入数据的操作之间存在时间窗口,可能导致多个请求都通过了“已选择”检查,从而插入了多条记录。

我的解决方案

前端增加随机时间

每个用户点击提交按钮后按照随机时间倒计时完成后自动提交

示例代码:

            layer.alert('数据提交中,请勿关闭页面...', {
                time: parseInt(Math.random() * 25 + 1) * 1000,
                // time: parseInt(Math.random() * (25 - 1 + 1) + 1)*1000,//用于生成1到25之间的随机整数并将其乘以1000:
                closeBtn: 0
                ,skin: 'yanshi' //样式类名
                ,success: function(layero, index){
                    var timeNum = this.time/1000, setText = function(start){
                        layer.title((start ? timeNum : --timeNum) + ' 秒后自动关闭', index);
                    };
                    setText(!0);
                    this.timer = setInterval(setText, 1000);
                    if(timeNum <= 0) clearInterval(this.timer);
                }
                ,end: function(){
                    disableButton(submitBtn, false);
                    clearInterval(this.timer);
                    $.post("{:url('course/index/index',['classid'=>$Think.config.app.sys.id,'action'=>'subsave','id'=>111])}", data.field, function(res) {
                        if (res.code === 200) {
                            layer.confirm(res.msg, {
                                closeBtn: 0,
                                btn: ['确定']
                            }, function(index, layero){
                                window.location.replace("{:url('course/index/index',['classid'=>$Think.config.app.sys.id,'action'=>'info'])}");
                            });
                        } else {

                            layer.confirm(res.msg, {
                                closeBtn: 0,
                                btn: ['返回修改']
                            }, function(index, layero){
                                window.location.replace("{:url('course/index/index',['classid'=>$Think.config.app.sys.id,'action'=>'info'])}");
                            });

                            // layer.msg(res.msg, { icon: 2 });
                        }
                    }, 'json');


                }
            });
            return false;
后端为user_id添加唯一约束

补充:Navicat 如何添加唯一约束(转自百度经验)

打开 Navicat,在左侧导航栏上找到相应的表格,右键菜单选择”设计表

在设计表编辑区,点击”索引“面板,勾选需要添加唯一值约束的字段,在索引类型栏选择”UNIQUE“。

切换至”SQL预览“面板,我们可以查看相应的 SQL 语句,快捷键”CTRL + S“可以保存设置。

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长安员外

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值