由于在做压力测试,同一时间占用的问题。

两个用户同时下同一时间的订单,需要增加校验,第一个能保存的用户保存,第二个就不能让保存了。

问题是通过代码,怎么都做不到毫秒级校验,所以解决办法就只能是通过数据库的唯一校验了。

首先是把指定的两个字段增加唯一约束,我的场景是选择的美发师和预约的时间两个字段

ALTER TABLE PaasOLT_Order ADD CONSTRAINT BarberTimeUni unique(BarberId,ServiceTime)

第一个语句就碰壁了,报错

真尴尬,好奇怪的报错,经过调查发现

想要设置成唯一性约束的字段,不能是NVARCHAR(MAX)的,索引的键不能超过 900字节的总大小。将数据类型更改为 NVARCHAR(450)

好吧,那就改下吧

ALTER TABLE PaasOLT_Order ALTER COLUMN BarberId nvarchar(32) NULL;

继续尴尬,还是报错

这个就比较好理解了,就跟你在后期修改一个字段为非空字段的时候,得保证这个列的值都不能是null,并且也不能重复。

至于解决这个问题,就得给现有的数据改成非空。

update PaasOLT_Order set BarberId = (select id from sysUser su where su.truename = paasolt_order.servicename)
where BarberId is null update PaasOLT_Order set BarberId = Id
where BarberId is null update PaasOLT_Order set ServiceTime = CONVERT(varchar(100), CreateTime, 120)
where ServiceTime is null

空的问题解决了,还有之前垃圾数据,有重复的。

再处理下,把之前重复的数据清掉

SQL 建立多个字段唯一性校验的更多相关文章

  1. SQL 把表中字段存储的逗号隔开内容转换成列表形式

    原文:[原创]SQL 把表中字段存储的逗号隔开内容转换成列表形式 我们日常开发中,不管是表设计问题抑或是其他什么原因,或多或少都会遇到一张表中有一个字段存储的内容是用逗号隔开的列表. 具体效果如下图: ...

  2. 使用AJAX实现用户名的唯一性校验(注册界面)-JAVA(新手)

    (1)实现用户名的唯一性校验 所需要准备的: Servlet 注册界面的JSP 接口和实现类 所需要的接口和实现类: 接口: /* * 用户注册 * 账号的唯一性校验,需要传参(username) * ...

  3. Sql Server xml 类型字段的增删改查

    1.定义表结构 在MSSM中新建数据库表CommunicateItem,定义其中一个字段ItemContentXml 为xml类型 2.编辑表数据,新增一行,发现xml类型不能通过设计器录入数据. 需 ...

  4. SQL Server对Xml字段的操作

    T-Sql操作Xml数据 一.前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和 ...

  5. 向已写好的多行插入sql语句中添加字段和值

    #region 添加支款方式--向已写好的多行插入sql语句中添加字段和值 public int A_ZhifuFS(int diqu) { ; string strData = @"SEL ...

  6. sql 给数据库表 字段 添加注释

    最近发现一些代码生成器 有针对注释做一个很好的转化,之前建表的时候 没有这块的注释.现在想增加,专门去看了下 如何增加注释 1 -- 表加注释 2 EXEC sys.sp_addextendedpro ...

  7. DWZ 框架remote 验证字段唯一性方法提交后台,如果是中文会显示成乱码问题

    关于jquery  remote 验证字段唯一性方法提交后台,如果是中文会显示成乱码问题.可以直接修改tomcat 配置文件server.xml  设置 URIEncoding=utf-8属性,将ge ...

  8. SQL语句更新时间字段的年份、月份、天数、时、分、秒

    SQL语句更新时间字段的年份.月份.天数.时.分.秒 --修改d表日期字段的年份update dset birth=STUFF(convert(nvarchar(23),birth,120),1,4, ...

  9. 使用 SQL Server 的 uniqueidentifier 字段类型

    原文:使用 SQL Server 的 uniqueidentifier 字段类型 SQL Server 自 2008 版起引入了 uniqueidentifier 字段,它存储的是一个 UUID, 或 ...

随机推荐

  1. hihocoder 1323 回文字符串(字符串+dp)

    题解: 比较水的题目 dp[i][j]表示[i...j]最少改变几次变成回文字符串 那么有三种转移 dp[i][j] = dp[i+1][j-1] + s[i] != s[j] dp[i][j] = ...

  2. [Leetcode] combinations 组合

    Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For exampl ...

  3. BZOJ4568 [Scoi2016]幸运数字 【点分治 + 线性基】

    题目链接 BZOJ4568 题解 选任意个数异或和最大,使用线性基 线性基插入\(O(logn)\),合并\(O(log^2n)\) 我们要求树上两点间异或和最大值,由于合并是\(O(log^2n)\ ...

  4. myisam_sort_buffer_size vs sort_buffer_size

    Q: I am MySQL on server with 6GB RAM. I need to know what is the difference between myisam_sort_buff ...

  5. [NOI2003] 文本编辑器 (splay)

    复制炸格式了,就不贴题面了 [NOI2003] 文本编辑器 Solution 对于光标的移动,我们只要记录一下现在在哪里就可以了 Insert操作:手动维护中序遍历结果,即每次取中点像线段树一样一样递 ...

  6. HDU 多校对抗赛 A Maximum Multiple

    Maximum Multiple Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  7. TCP ------ RST的产生

    产生RST的几个原因 1.请求超时 有89.27两台主机.主机89向主机27发送了一个SYN,表示希望连接8888端口,主机27回应了主机89一个SYN表示可以连接.但是主机89莫名其妙的发送了一个R ...

  8. 使用state模块部署lamp架构

    install_httpd: pkg.installed: - name: httpd httpd_running: service.running: - name: httpd - enable: ...

  9. bzoj 1604: [Usaco2008 Open]Cow Neighborhoods 奶牛的邻居——排序+贪心+set

    Description 了解奶牛们的人都知道,奶牛喜欢成群结队.观察约翰的N(1≤N≤100000)只奶牛,你会发现她们已经结成了几个“群”.每只奶牛在吃草的时候有一个独一无二的位置坐标Xi,Yi(l ...

  10. 关于jQuery.extend

    这次来了解下jQuery的extend吧,作为菜鸟的我学艺不精,看插件时经常看到extend函数的使用,从网上看到一篇不错的介绍,特地转载过来留给自己收藏学习: ------------------- ...