ホームページ >データベース >mysql チュートリアル >以下に、質問を組み込んで核心的な問題に焦点を当てたタイトルをいくつか示します。 * 日付範囲を重複せずに MySQL に挿入するにはどうすればよいですか? * MySQL の日付範囲の挿入: 重複の回避 - 解決策
問題:
次のテーブルが与えられたとします。利用可能な日付範囲 (avail) のタスクは、指定されたアカウント ID (acc_id) の既存の日付範囲と重複しない場合にのみ、新しい日付範囲をテーブルに挿入することです。
提案されたソリューション単一の Insert ステートメントの使用:
これを 1 つの Insert ステートメントで実現したいと思うかもしれませんが、残念ながら、MySQL 単独では直接不可能です。
代替案アプローチ:
SQL CHECK 制約 (MySQL ではサポートされていません):
SQL CHECK 制約は、このような重複を強制するための推奨される方法です。検証。ただし、MySQL は CHECK 制約をサポートしません。
PostgreSQL CHECK 制約:
PostgreSQL はテーブルの CHECK 制約をサポートします。 PostgreSQL への切り替えが実行可能なオプションである場合は、このアプローチを検討できます。
MySQL トリガー:
MySQL トリガーを使用して次のことを確認できます。挿入または更新操作の前にオーバーラップします。ただし、これには最新の MySQL バージョンが必要です。
アプリケーション ロジック:
通常、重複検証はアプリケーション ロジックで実行されます。 SELECT COUNT(id) ... ステートメントを使用して、新しいエントリに違反する行をチェックできます。カウントが 0 より大きい場合、挿入または更新は中止されます。
追加の考慮事項:
結論:
単一の挿入ステートメントは MySQL では実現できない可能性がありますが、PostgreSQL CHECK 制約、MySQL トリガー、アプリケーション ロジックなどの代替アプローチにより、信頼性の高い重複検証を提供できます。
以上が以下に、質問を組み込んで核心的な問題に焦点を当てたタイトルをいくつか示します。 * 日付範囲を重複せずに MySQL に挿入するにはどうすればよいですか? * MySQL の日付範囲の挿入: 重複の回避 - 解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。