Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come inserire i dati se non in mezzo a sql server 2008?

La cosa migliore sarebbe evitare i trigger ed eseguire un controllo con se esiste prima dell'inserimento

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

È un semplice controllo per trovare la prima sovrapposizione. Seleziona TOP 1 1 è un trucco per evitare di recuperare effettivamente i dati, verrà restituito non appena corrisponderà a una riga che si sovrappone all'intervallo di date che stai effettivamente cercando di salvare