给定table1.column1我需要确定它是否有一个外键到table2.column2。
此SQL将运行多次,因此需要非常快。
我已经看到了一些解决方案,但往往比我需要的更复杂(即数据库中的所有外键或桌面上的所有外键)
谢谢!
答案 0 :(得分:1)
以下是我更喜欢使用的查询,将其制作成视图:
CREATE VIEW vwForeignKeys AS
SELECT
OBJECT_NAME(f.parent_object_id) TableName,
COL_NAME(fc.parent_object_id,fc.parent_column_id) ColName,
OBJECT_NAME (f.referenced_object_id) ReferencedTableName,
COL_NAME(fc.referenced_object_id,fc.referenced_column_id) ReferencedColName,
f.Name
FROM
sys.foreign_keys AS f
INNER JOIN
sys.foreign_key_columns AS fc
ON f.OBJECT_ID = fc.constraint_object_id
INNER JOIN
sys.tables t
ON t.OBJECT_ID = fc.referenced_object_id
在您的情况下,查询将看起来像
IF EXISTS(
SELECT 1
FROM
vwForeignKeys
WHERE
TableName='table1'
AND ColName='column1'
AND ReferencedTableName='table2'
AND ReferencedColName='column2'
) THEN
BEGIN
--FOREIGN KEY EXISTS, DO SOMETHING
END