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

Håndhævelse af unikke datointervalfelter i SQL Server 2008

Jeg synes, denne betingelse er mere passende:

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 bruger den enklere betingelse til at detektere overlapninger - der eksisterer et overlap, hvis begge rækker starter før den anden række slutter.




  1. Er Postgres designet til at skrive til delte datalagre?

  2. databasekodningsproblem? Dobbelte og enkelte anførselstegn vises med spørgsmålstegn

  3. Hvordan fejlretter du MySQL-lagrede procedurer?

  4. Gruppér efter dato og vis i dato tid i sql