問題:
給定一個表日期範圍可用性(avail),任務是僅在新日期範圍不與給定帳戶ID (acc_id) 的任何現有日期範圍重疊時將新日期範圍插入表中。
建議的解決方案使用單一插入語句:
雖然在單一插入語句中完成此操作可能很誘人,但遺憾的是,僅在MySQL 中無法直接實現。
替代方案方法:
SQL CHECK 限制(MySQL 不支援):
PostgreSQL CHECK 限制:
PostgreSQL 支援表上的 CHECK 限制。如果切換到 PostgreSQL 是一個可行的選擇,可以考慮這個方法。MySQL 觸發器:
MySQL 觸發器可用於檢查在插入或更新操作之前重疊。但是,這需要最新的 MySQL 版本。應用程式邏輯:
通常,重疊驗證在應用程式邏輯中執行。 SELECT COUNT(id) ... 語句可用來檢查違反新條目的行。如果計數大於 0,則插入或更新將中止。其他注意事項:
結論:
雖然單一插入語句在MySQL 中可能不可行,但PostgreSQL CHECK 約束、MySQL 觸發器或應用程序邏輯等替代方法可以提供可靠的重疊驗證。以上是以下是一些標題,其中包含問題並重點關注核心問題: * 如何將日期範圍插入MySQL而不重疊? * MySQL 日期範圍插入:避免重疊 - 解決方案a的詳細內容。更多資訊請關注PHP中文網其他相關文章!