」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何防止 MySQL 中的日期範圍重疊?

如何防止 MySQL 中的日期範圍重疊?

發佈於2024-11-12
瀏覽:510

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 版本。

最終,方法的選擇取決於應用程式的特定要求以及以受支援的方式之一實現它的可行性。

最新教學 更多>
  • 如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    在 PHP 中組合關聯數組在 PHP 中,將兩個關聯數組組合成一個數組是常見任務。考慮以下請求:問題描述:提供的代碼定義了兩個關聯數組,$array1 和 $array2。目標是建立一個新陣列 $array3,它合併兩個陣列中的所有鍵值對。 此外,提供的陣列具有唯一的 ID,而名稱可能重疊。要求是建...
    程式設計 發佈於2024-11-19
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSocke...
    程式設計 發佈於2024-11-19
  • 如何使用遞歸宏迭代宏參數?
    如何使用遞歸宏迭代宏參數?
    宏參數上的 Foreach 宏在程式設計領域,宏提供了執行重複任務的便捷方法。然而,嘗試建立一個迭代另一個巨集的參數的巨集可能會帶來挑戰。讓我們探討如何克服這個障礙並深入研究遞歸宏的領域。 遞歸巨集可用來遍歷傳遞給巨集的參數清單。然而,這種方法可能容易出錯,因為它可能會導致無限遞歸。為了解決這個問題...
    程式設計 發佈於2024-11-19
  • 大批
    大批
    方法是可以在物件上呼叫的 fns 數組是對象,因此它們在 JS 中也有方法。 slice(begin):將陣列的一部分提取到新數組中,而不改變原始數組。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index ...
    程式設計 發佈於2024-11-19
  • 為什麼「text-align: center」不適用於 CSS 中的 Colgroup?
    為什麼「text-align: center」不適用於 CSS 中的 Colgroup?
    在CSS Colgroups 中使用“text-align: center”:故障排除指南格式化表格時遇到的一個常見挑戰是水平對齊文字。雖然「text-align」屬性可以單獨應用於表格單元格,但應用於 colgroup 時有時似乎沒有效果。下面解釋了發生這種情況的原因以及克服該問題的解決方案。 C...
    程式設計 發佈於2024-11-19
  • 在 PHP 中處理時間格式時,如何避免意外結果?
    在 PHP 中處理時間格式時,如何避免意外結果?
    PHP 中的時間操作:從H:i 添加並減去30 分鐘在PHP 中,處理與時間相關的任務對於各種任務至關重要應用程式。一種常見情況涉及修改格式為「H:i」的時間值。此格式表示以小時和分鐘為單位的時間,例如“10:00”或“13:30”。 要從這些值中加法或減去特定時間間隔,我們可以使用 strtoti...
    程式設計 發佈於2024-11-19
  • 如何從 java.sql.ResultSet 取得列名?
    如何從 java.sql.ResultSet 取得列名?
    如何從java.sql.ResultSet取得列名**java.sql.ResultSet介面提供對資料庫查詢結果的訪問,但不直接提供使用索引檢索列名的方法。要取得此信息,您可以利用 ResultSetMetaData 元資料物件。 以下步驟示範如何使用列索引以字串形式取得列名稱:取得ResultS...
    程式設計 發佈於2024-11-19
  • 如何在 Eclipse 中存取受限類別:繞過非 API 類別限制?
    如何在 Eclipse 中存取受限類別:繞過非 API 類別限制?
    存取限制:在Eclipse 中處理非API 類別限制Eclipse 強制執行存取限制,以防止開發人員無意中使用其之外的類別預期的公共API。但是,某些情況下可能需要存取受限類別。 訪問限制錯誤的原因報告的錯誤(“訪問限制:類型'應用程序'不是API 。 ..") 當Ecli...
    程式設計 發佈於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
  • 為什麼內嵌 JavaScript 無法在具有外部來源的腳本標籤中運作?
    為什麼內嵌 JavaScript 無法在具有外部來源的腳本標籤中運作?
    使用 HTML 腳本標籤載入腳本HTML 腳本標籤用於包含和執行 JavaScript 程式碼。預設情況下,此標記採用外部來源屬性,例如 scr 來載入 JavaScript 檔案。但是,嘗試在腳本標記中包含內聯 JavaScript,如下所示:<script src="myFile...
    程式設計 發佈於2024-11-19
  • 為什麼在使用 Node.js 連接到 MySQL 時出現「connect ECONNREFUSED」錯誤?
    為什麼在使用 Node.js 連接到 MySQL 時出現「connect ECONNREFUSED」錯誤?
    了解Node.js MySQL 的ECONNREFUSED 錯誤嘗試使用Node.js 建立與MySQL 資料庫的連線時,開發人員可能會遇到錯誤訊息“連接ECONNREFUSED”。這表明伺服器端拒絕連接,有效阻止客戶端應用程式存取資料庫。 查詢中提供的程式碼片段包括以下設定:var client ...
    程式設計 發佈於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() 將導致空輸出。 這是因為 mysqli_fe...
    程式設計 發佈於2024-11-19

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3