SQL Server检测一对一或一对多
我需要检测外键是1-1还是1-many。如何在SQL Server中执行此操作 我的用例是扩展PetaPoco,这样它就有了额外的计算字段,这些字段指向相应的外键记录。问题是我的表既有1-1也有1-many。我需要检测,以便附加字段可以是poco或列表SQL Server检测一对一或一对多,sql,.net,sql-server,Sql,.net,Sql Server,我需要检测外键是1-1还是1-many。如何在SQL Server中执行此操作 我的用例是扩展PetaPoco,这样它就有了额外的计算字段,这些字段指向相应的外键记录。问题是我的表既有1-1也有1-many。我需要检测,以便附加字段可以是poco或列表 SELECT tab1.name as [source_table], col1.name AS [source_column], tab2.name AS [referenced_table], col2.name AS [r
SELECT tab1.name as [source_table],
col1.name AS [source_column],
tab2.name AS [referenced_table],
col2.name AS [referenced_column]
FROM sys.foreign_key_columns fkc
INNER JOIN sys.objects obj
ON obj.object_id = fkc.constraint_object_id
INNER JOIN sys.tables tab1
ON tab1.object_id = fkc.parent_object_id
INNER JOIN sys.columns col1
ON col1.column_id = parent_column_id AND col1.object_id = tab1.object_id
INNER JOIN sys.tables tab2
ON tab2.object_id = fkc.referenced_object_id
INNER JOIN sys.columns col2
ON col2.column_id = referenced_column_id AND col2.object_id = tab2.object_id
除非外键上有唯一的约束,或者外键也是主键或唯一索引,否则我认为没有可靠的方法。