sql >> Databasteknik >  >> RDS >> Sqlserver

Genomföra unika datumintervallsfält i SQL Server 2008

Jag tror att detta villkor är mer lämpligt:

IF EXISTS ( SELECT  * --No need to choose columns in an EXISTS
        FROM    tbl_Example t1
         inner join
                tbl_Example t2
                  on
                     t1.StockCode = t2.StockCode and
                     t1.Type = t2.Type and
                     t1.ValidFrom < t2.ValidTo and
                     t2.ValidFrom < t1.ValidTo and
                     t1.ID <> t2.ID
        where
            t1.ID in (select ID from inserted))
BEGIN
     RAISERROR ('Date range cant overlap existing date ranges for given StockCode and Type', 16, 1)
     ROLLBACK --We're in a trigger, we *must* be in a transaction
END

Den använder det enklare villkoret för att upptäcka överlappningar - en överlappning finns om båda raderna börjar innan den andra raden slutar.




  1. Det bästa sättet för PHP Caching

  2. I Spring Boot 2, är det möjligt att automatiskt generera en JoinTable med en unik begränsning?

  3. Infoga ny rad med data beräknad från andra rader

  4. hur hämtar man data från tre eller fler tabeller?