问题
我们有一个表格处理为用户安排假期和一些业务规则,说某些人群不能同时外出。调度表的相关部分如下所示
out_date_range (daterange) | |
---|---|
1 | ["2021-12-27", "2021-12-30") |
2 | |
3 | ["2022-01-24", "2022-01-27") |
1 | |
2 | ["2022-01-25", "2022-01-30") |
使用 PostgreSQL v14,您可以运行以下查询来找出新条目是否与以前的条目冲突:
SELECT range_intersect_agg(mr)
FROM (SELECT range_agg(out_date_range) AS mr
FROM mytable
WHERE user_id <> '1' GROUP BY user_id) AS q
WHERE mr && '["2022-01-26", "2022-01-29")'::daterange;
这需要新的多范围数据类型。
首先,我们为用户 1 以外的每个用户构建一个多范围的关闭时间,然后我们通过相交来查看所有这些多范围中是否有任何日期。 如果结果不为空,则存在冲突。
这不能用数据库约束来完成,所以使用锁定(SELECT ... FOR NO KEY UPDATE
)或SERIALIZABLE
事务来防止异常。
相关内容
- 管道中的地形-如何检查计划更改
- 约束冲突不会引发异常
- 发现无法解决的不同"System.Numerics.Vectors"版本之间的冲突
- 与git合并,想要忽略特定文件夹中的合并冲突
- 我需要采取哪些步骤来设置每周发送数据的计划触发器?
- API冲突-多次调用-[xctestexpectations fulfill],我该如何解决这个问题?
- flutter pub run build_runner build——delete- conflict冲突-outpu
- C - gcc/clang: 错误: 冲突的类型<function_name>: 为什么函数名称很重要?
- 如何强制conda跳过检查冲突?
- 查看Azure ServiceBus主题中的计划消息
- 修复/解决bazel包冲突的选项是什么?
- 解除冲突约束N团队计划
- 为什么我们不能交换计划的冲突操作?
- 查找与 PostgreSQL 范围类型冲突的计划
- 配置时作业计划程序和工作管理器冲突.在MyApplication()Android中调用了Builder()
- 在与取消搁置存在冲突后,是否执行计划解决
- 可序列化的计划,但不能冲突序列化
- 编号计划冲突
- 计划任务导致访问冲突,但手动运行良好
- Powershell计划任务冲突
最新更新
- 从JS到PHP获取一个值
- 在Powershell中传递给函数时如何在参数中添加引号
- Ionic React:在React Hooks上实现InAppPurchase 2
- 清理脚本(而不是在提供的路径中搜索)总是命中系统根目录或运行它的根文件夹
- 无法加载要从中扩展的配置"airbnb" - gitlab ci
- 我如何将任何方程输入到Python中的标准形式?
- 在Swift中从实时数据库Firebase中获取数据
- Devstack单一接口不能在ubuntu 20.04上工作
- Typescript没有安装
- 函数式语言类型推断混乱
- 使用Python从大文件解析数字数据时提高速度
- 如何从Multipass共享文件夹到主机?
- 从CMD或批处理文件中禁用"Notify me when the clock changes"设置
- 在Dockerfile中设置——net=host ?
- 如何在React中将arrayBuffer转换为JSON
- 是否有可能将html响应转换为json在扑动?
- 快速过滤numpy数组值的方法
- C保存字符串的数组列表
- 需要minio film配置建议
- 如何应用CSS字体大小"relative to what it would be originally"?
- 该应用程序在个人帐户中未绑定脚本时被阻止错误
- 将原始查询转换为django orm
- 如何从出现次数和值的列表中创建一个新列表
- 使用Julia中的Julia Broadcasting根据数组的索引计算数组值
- 在javascript中使用条件更新嵌套数组
- for循环多个条件
- 将第一列中的名称行转换为r中的列
- Nx张量的映射切片
- Dotnet Core Azure功能(隔离进程)如何加载应用程序.每个环境的Json
- Discordjs不发送消息
热门标签:
javascript python java c# php android html jquery c++ css ios sql mysql arrays asp.net json python-3.x ruby-on-rails .net sql-server django objective-c excel regex ruby linux ajax iphone xml vba spring asp.net-mvc database wordpress string postgresql wpf windows xcode bash git oracle list vb.net multithreading eclipse algorithm macos powershell visual-studio image forms numpy scala function api selenium