Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Thực thi các trường phạm vi ngày duy nhất trong SQL Server 2008

Tôi nghĩ điều kiện này thích hợp hơn:

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

Nó sử dụng điều kiện đơn giản hơn để phát hiện chồng chéo - chồng chéo tồn tại nếu cả hai hàng bắt đầu trước khi hàng kia kết thúc.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sql varchar (tối đa) so với varchar (sửa chữa)

  2. 5 tài nguyên tuyệt vời giúp bạn phát huy vai trò giám sát cơ sở dữ liệu của mình

  3. Không thể bắt đầu một giao dịch phân tán

  4. Đường mòn kiểm tra với Core Framework thực thể

  5. Chuỗi kết nối máy chủ SQL - dấu chấm (.) Hoặc (cục bộ) hoặc (cục bộ)