Dates superposées dans MySQL : insertion avec détection de conflit
Problème :
Considérez une base de données table avec les colonnes start_date et end_date représentant la disponibilité pour un acc_id spécifique. L'objectif est d'empêcher les utilisateurs de créer de nouvelles plages de disponibilité qui chevauchent celles existantes.
Question :
Est-il possible d'effectuer cette validation dans une seule instruction d'insertion MySQL ?
Réponse :
Malheureusement, en utilisant uniquement MySQL simple, il n'est pas possible de garantir que les dates ne se chevauchent pas dans une seule instruction d'insertion. En effet, MySQL ne prend pas en charge les contraintes CHECK, ce qui permettrait à la validation d'être appliquée par le moteur de base de données lui-même.
Options :
Options de base de données alternatives :
Si vous pouvez envisager un moteur de base de données différent, PostgreSQL offre la prise en charge des contraintes CHECK, rendant la validation souhaitée simple.
Remarque :
Même si vous décidez d'utiliser une base de données alternative ou d'implémenter la validation dans la logique de l'application, il est toujours recommandé de vérifier le nombre de lignes affectées après l'opération d'insertion. Cela peut aider à détecter des échecs potentiels qui peuvent ne pas être liés à des chevauchements de dates.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!