Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wymuszanie unikalnych pól zakresu dat w SQL Server 2008

Myślę, że ten warunek jest bardziej odpowiedni:

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

Używa prostszego warunku do wykrywania nakładania się - nakładanie się istnieje, jeśli oba wiersze zaczynają się przed końcem drugiego wiersza.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oblicz godziny pracy między dwiema datami

  2. Czy procedury składowane blokują tabele/wiersze?

  3. Prześlij plik CSV na serwer SQL

  4. Pierwszeństwo typów danych w SQL Server

  5. Sprawdzanie historii planu konserwacji programu SQL Server pod kątem powodzenia lub niepowodzenia