Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie fügt man Daten ein, wenn nicht dazwischen in SQL Server 2008?

Das Beste wäre, Trigger zu vermeiden und vor dem Einfügen zu prüfen, ob vorhanden

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

Es ist eine einfache Überprüfung, um die erste Überlappung zu finden. Das Auswählen von TOP 1 1 ist ein Trick, um zu vermeiden, dass die Daten tatsächlich abgerufen werden. Es wird zurückgegeben, sobald es mit einer Zeile übereinstimmt, die sich mit dem Datumsbereich überschneidet, den Sie tatsächlich zu speichern versuchen