”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何防止 MySQL 中的日期范围重叠?

如何防止 MySQL 中的日期范围重叠?

发布于2024-11-12
浏览:457

How to Prevent Date Range Overlaps in MySQL?

处理 MySQL 中的重叠日期范围

将新日期范围插入到现有表中可能会很棘手,尤其是在尝试防止与现有条目。在这种情况下,我们希望避免插入与特定帐户标识符 (acc_id) 的数据库中的范围重叠的范围。

虽然 MySQL 提供了使用 SQL CHECK 约束来验证日期的选项,但遗憾的是,该功能并未提供由 MySQL 支持。另一方面,PostgreSQL 支持 CHECK 约束,但切换数据库引擎可能并不适用于所有情况。

作为替代方案,我们可以在应用程序逻辑中实现验证。一种方法是在尝试 INSERT 之前使用 SELECT COUNT(id) ... 语句检查重叠:

SELECT COUNT(id)
FROM avail
WHERE acc_id = '175'
AND (start_date BETWEEN '2015-05-30' AND '2015-06-04')
OR (end_date BETWEEN '2015-05-30' AND '2015-06-04')
OR ('2015-05-30' BETWEEN start_date AND end_date)
OR ('2015-06-04' BETWEEN start_date AND end_date);

如果返回的计数大于 0,则由于重叠而中止插入。

另一种方法涉及使用MySQL 中的触发器。可以对触发器进行编程,以在发生 INSERT/UPDATE 之前检查重叠,并在发现任何重叠时抛出错误。然而,触发器需要最新的 MySQL 版本。

最终,方法的选择取决于应用程序的具体要求以及以受支持的方式之一实现它的可行性。

最新教程 更多>
  • 如何从 java.sql.ResultSet 获取列名?
    如何从 java.sql.ResultSet 获取列名?
    如何从java.sql.ResultSet获取列名**java.sql.ResultSet接口提供对数据库查询结果的访问,但不直接提供使用索引检索列名的方法。要获取此信息,您可以利用 ResultSetMetaData 元数据对象。以下步骤演示如何使用列索引以字符串形式获取列名称:获取 Result...
    编程 发布于2024-11-19
  • 如何在 Eclipse 中访问受限类:绕过非 API 类限制?
    如何在 Eclipse 中访问受限类:绕过非 API 类限制?
    访问限制:在 Eclipse 中处理非 API 类限制Eclipse 强制执行访问限制,以防止开发人员无意中使用其之外的类预期的公共 API。但是,某些情况下可能需要访问受限类。访问限制错误的原因报告的错误(“访问限制:类型‘应用程序’不是 API 。 ..") 当 Eclipse 检测到...
    编程 发布于2024-11-19
  • Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta:列偏移的删除和恢复Bootstrap 4 在其 Beta 1 版本中引入了重大更改柱子偏移了。然而,随着 Beta 2 的后续发布,这些变化已经逆转。从 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    编程 发布于2024-11-19
  • 如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    在 PHP 中组合关联数组在 PHP 中,将两个关联数组组合成一个数组是一项常见任务。考虑以下请求:问题描述:提供的代码定义了两个关联数组,$array1 和 $array2。目标是创建一个新数组 $array3,它合并两个数组中的所有键值对。 此外,提供的数组具有唯一的 ID,而名称可能重合。要求...
    编程 发布于2024-11-19
  • 为什么内联 JavaScript 无法在具有外部源的脚本标签中工作?
    为什么内联 JavaScript 无法在具有外部源的脚本标签中工作?
    使用 HTML 脚本标签加载脚本HTML 脚本标签用于包含和执行 JavaScript 代码。默认情况下,此标记采用外部源属性,例如 scr 来加载 JavaScript 文件。但是,尝试在脚本标记中包含内联 JavaScript,如下所示:<script src="myFile.j...
    编程 发布于2024-11-19
  • 在 Go 中使用 WebSocket 进行实时通信
    在 Go 中使用 WebSocket 进行实时通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSocke...
    编程 发布于2024-11-19
  • 如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 识别今天生日的用户使用 MySQL 确定今天是否是用户的生日涉及查找生日匹配的所有行今天的日期。这可以通过一个简单的 MySQL 查询来实现,该查询将存储为 UNIX 时间戳的生日与今天的日期进行比较。以下 SQL 查询将获取今天有生日的所有用户: FROM USERS ...
    编程 发布于2024-11-19
  • 关于该项目的介绍以及...我自己
    关于该项目的介绍以及...我自己
    关于我的简要信息...... 你好世界!我叫卢卡斯,是一名 31 岁的巴西人,住在捷克共和国(或捷克??),我是一名软件工程师。我在不同的领域工作了 7/8 年,并且被困在这个领域。我没有动力,只是做基础工作并保持收入。但我错过了一些可以激励我的东西,也缺少了从工作中获得“热情”的...
    编程 发布于2024-11-19
  • 如何跨子域共享localStorage数据?
    如何跨子域共享localStorage数据?
    跨子域共享 localStorage从 cookie 迁移到 localStorage 时,跨域数据访问可能成为一个挑战。在像问题中描述的场景中,不同的子域(例如 site.example 和 www.site.example)隔离其 localStorage 对象,数据共享会出现问题。答案中提出的...
    编程 发布于2024-11-19
  • 如何在同一结果集上多次使用“mysqli_fetch_array()”?
    如何在同一结果集上多次使用“mysqli_fetch_array()”?
    多次使用 mysqli_fetch_array()使用 PHP 和 MySQL 处理数据库时,您可能会遇到需要多次访问相同查询结果的情况使用 mysqli_fetch_array() 函数。然而,尝试在同一个结果集中多次使用 mysqli_fetch_array() 将导致空输出。这是因为 mysq...
    编程 发布于2024-11-19
  • PHP 中的 Elvis 运算符是什么以及它如何工作?
    PHP 中的 Elvis 运算符是什么以及它如何工作?
    驯服 PHP 中的 Elvis 运算符 (?:)神秘的 ?: 运算符为一些 PHP 代码增色不少,让您感到困惑。这篇简明的文章深入探讨了其神秘的本质,揭示了其真正的目的。揭开 ?: 运算符?: 运算符,也称为“Elvis 运算符, " 功能类似于三元运算符。然而,它的独特之处在于没有一个表...
    编程 发布于2024-11-19
  • 如何在Java中以毫秒精度提取当前时间?
    如何在Java中以毫秒精度提取当前时间?
    在Java中以毫秒精度提取当前时间以YYYY-MM-DD HH:MI:Sec格式获取当前时间.毫秒,需要对所提供的代码进行扩展。修改的关键在于细化SimpleDateFormat模式。提供的代码检索当前时间,不带毫秒信息:public static String getCurrentTimeStam...
    编程 发布于2024-11-19
  • 大批
    大批
    方法是可以在对象上调用的 fns 数组是对象,因此它们在 JS 中也有方法。 slice(begin):将数组的一部分提取到新数组中,而不改变原始数组。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index p...
    编程 发布于2024-11-19
  • 如何从 MongoDB 数组中删除对象?
    如何从 MongoDB 数组中删除对象?
    MongoDB:从数组中删除对象在 MongoDB 中,您可以使用 $ 从嵌入在文档中的数组中删除对象拉操作员。如果您希望从数组中删除特定对象,则需要提供与确切对象匹配的查询。考虑以下文档:{ _id: 5150a1199fac0e6910000002, name: 'some name...
    编程 发布于2024-11-19
  • 尽管代码有效,为什么 POST 请求无法捕获 PHP 中的输入?
    尽管代码有效,为什么 POST 请求无法捕获 PHP 中的输入?
    解决 PHP 中的 POST 请求故障在提供的代码片段中:action=''而不是:action="<?php echo $_SERVER['PHP_SELF'];?>";?>"检查 $_POST数组:表单提交后使用 var_dump 检查 $_POST 数...
    编程 发布于2024-11-19

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3