ここでこの質問:
MySQL:INSERTIGNOREまたはONDUPLICATE KEY UPDATEを使用して、一意ではなく複数の列をチェックします
似ていますが、完全ではありません。
次のようなテーブルを使用して、ウォッチリストを作成しようとしています。
recordId | itemId | userId | dateAdded
recordIdは唯一のunique
列であり、自動インクリメントIDフィールドです。
itemId、userId、およびdateAddedは個別に複製できますが、完全に複製することはできません。
したがって、ユーザーがすでにウォッチリストにアイテムを追加している場合は、dateAddedを更新するだけで済みます。
したがって、行には同じuserIdが何度も含まれる場合があり(ユーザーが複数のアイテムを「監視」したい場合があるため)、itemIdが何度も含まれる場合があります(同じアイテムが多くのユーザーによって「監視」される場合があるため)が、両方の組み合わせすでに存在するレコードと一致するuserIdとitemIdにより、更新が発生するはずです。
これを行う単一のステートメントの方法はありますか、またはuserId = & postingUser & and itemId = & requestedId &
挿入を試みる前にデータベースに問い合わせる必要がありますか?