sql >> データベース >  >> RDS >> Mysql

mysql-日付が既存の日付と重複しない場合は、日付範囲を日付列に挿入します

    悲しいことに、MySQLだけを使用すると、これは不可能です。または少なくとも、実質的に。推奨される方法は、SQLCHECK制約を使用することです。これらはSQL言語標準にあります。ただし、MySQLはそれらをサポートしていません。

    参照: https://dev.mysql.com/doc /refman/5.7/en/create-table.html

    PostgreSQLはテーブルのCHECK制約をサポートしているようですが、データベースエンジンを切り替えることがどれほど実行可能か、またはその機能を使用するだけでも問題が発生する価値があるかどうかはわかりません。

    MySQLでは、トリガーを使用してこの問題を解決できます。この問題は、挿入/更新が発生する前に重複する行をチェックし、SIGNALを使用してエラーをスローします。 声明。 (参照: https://dev.mysql.com/doc/ refman / 5.7 / en / signal.html )ただし、このソリューションを使用するには、最新のMySQLバージョンを使用する必要があります。

    純粋なSQLソリューションとは別に、これは通常、アプリケーションロジックで実行されるため、MySQLデータベースにアクセスするプログラムは通常、SELECT COUNT(id) ... 声明。返されたカウントが0より大きい場合、それは単に挿入/更新にはなりません。




    1. SQL結合の究極のガイド:CROSS JOIN –パート3

    2. MySQL CAST –MySQLでCastを入力する方法

    3. MySQL:連続した月のレコードの数

    4. MySQLクエリ-現在の日付に基づいてレコードを取得します