1

如果我創建下表如何檢索SQL Server的檢查約束依賴列

create table test(
     id1 int, 
     id2 int, 
     id3 int constraint CK1 check (id3 > 2), 
     constraint CK2 check (id1 > id2), 
) 

我可以通過查詢select * from sys.check_constraints找到CK1的依賴關係。 parent_column_id將返回正確答案3.然而,CK2是一個不同的故事,父列ID返回0.是否有另一個視圖可以告訴我CK2的依賴列?

感謝

回答

1

可以使用INFORMATION_SCHEMA架構。

select cu.* 
from INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE cu 
inner join INFORMATION_SCHEMA.CHECK_CONSTRAINTS c on c.CONSTRAINT_NAME=cu.CONSTRAINT_NAME 
where c.CONSTRAINT_NAME='CK2' 
0

我更喜歡使用基本視

select * 
from sys.check_constraints cc 
join sys.objects o 
    on o.object_id=cc.parent_object_id