Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment insérer des données sinon entre les deux dans sql server 2008 ?

La meilleure chose serait d'éviter les déclencheurs et d'effectuer une vérification avec s'il existe avant d'insérer

IF NOT EXISTS (SELECT TOP 1 1 FROM MyTable WHERE @InsertedEndDate > begin_date AND @InsertedBeginDate < end_date)
BEGIN
    --do actual insert/work
END

C'est une simple vérification pour trouver le premier chevauchement. Le Select TOP 1 1 est une astuce pour éviter de récupérer réellement les données, il reviendra dès qu'il correspond à une ligne qui chevauche la plage de dates que vous essayez réellement d'enregistrer