Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Налагане на уникални полета за диапазон от дати в SQL Server 2008

Мисля, че това условие е по-подходящо:

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

Той използва по-простото условие за откриване на припокриване - припокриване съществува, ако и двата реда започват преди края на другия ред.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да експортирате данни от електронна таблица на Excel в таблица на Sql Server 2008

  2. ПОКАЗВАНЕ НА ВСИЧКИ данни за дати между две дати; ако не съществува ред за определена дата, покажете нула във всички колони

  3. Разлика между локални и глобални временни таблици в SQL Server

  4. Разбиране на важността на настройката на паметта в SQL Server

  5. datetime срещу datetime2 в SQL Server:Каква е разликата?