sql >> Databasteknik >  >> RDS >> Sqlserver

Hur infogar man data om inte däremellan i sql server 2008?

Det bästa vore att undvika triggers och utföra en kontroll med om det finns innan du infogar

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

Det är en enkel kontroll för att hitta den första överlappningen. Välj TOP 1 1 är ett knep för att undvika att faktiskt hämta data, den kommer tillbaka så snart den matchar en rad som överlappar datumintervallet du faktiskt försöker spara



  1. Djupdykning i NoSQL:En komplett lista över NoSQL-databaser

  2. Skapa en binär sträng med nollor, med variabel längd

  3. Hur kan jag se om mitt Oracle-system är inställt för att stödja Unicode eller multibyte-tecken?

  4. Varför kan ny användare i PostgreSQL ansluta till alla databaser?