2010-09-28 48 views
8

Tôi vừa học được, thật ngạc nhiên rằng các ràng buộc khóa ngoại có thể không đáng tin cậy. Điều này xảy ra khi một ràng buộc được thêm vào bằng cách sử dụng WITH NOCHECK. Khi một ràng buộc không đáng tin cậy, nó không được sử dụng bởi trình phân tích truy vấn để tạo kế hoạch truy vấn.Ràng buộc không đáng tin cậy

Xem:
http://sqlblog.com/blogs/hugo_kornelis/archive/2007/03/29/can-you-trust-your-constraints.aspx

Câu hỏi của tôi là thế này. Khi một ràng buộc không đáng tin cậy, có một thuộc tính nào đó trên ràng buộc mà tôi có thể kiểm tra cho tôi biết điều này không? Tôi đoán tôi có thể kiểm tra để xem liệu ràng buộc đã được thêm bằng cách sử dụng WITH NOCHECK, nhưng có cách nào khác một ràng buộc có thể bị gắn cờ là không đáng tin cậy không?

Trả lời

4
select * 
    from sys.check_constraints 
    where is_not_trusted = 1 

select * 
    from sys.foreign_keys 
    where is_not_trusted = 1 
1

there is a property on the constraint có thể truy cập thông qua chức năng OBJECTPROPERTY.

SELECT 
    CASE WHEN OBJECTPROPERTY(OBJECT_ID('FK_TIMECARD_EMPLOYEEID'), 'CnstIsNotTrusted') = 1 
     THEN 'NO' 
     ELSE 'YES' 
     END AS 'IsTrustWorthy?' 
Các vấn đề liên quan