Sql server 确定SQL Server外键名称
我试图确定表上外键的名称,但得到了错误的值。如果我使用这个示例SQLSql server 确定SQL Server外键名称,sql-server,foreign-keys,database-schema,Sql Server,Foreign Keys,Database Schema,我试图确定表上外键的名称,但得到了错误的值。如果我使用这个示例SQL 创建表地址 ( id INT非空主键, 街道VARCHAR不为空 ); 创建表格人员 ( id INT非空主键, orgId INT NOT NULL引用数据库组织(id) ); 选择tbl.name TableName、col.name ColumnName、fk.name ForeignKey 从sys.tables tbl 将sys.columns连接到tbl.object\u id=col.object\u id 左外
创建表地址
(
id INT非空主键,
街道VARCHAR不为空
);
创建表格人员
(
id INT非空主键,
orgId INT NOT NULL引用数据库组织(id)
);
选择tbl.name TableName、col.name ColumnName、fk.name ForeignKey
从sys.tables tbl
将sys.columns连接到tbl.object\u id=col.object\u id
左外部联接sys.foreign\u键tbl.object\u id=fk.parent\u object\u id上的fk
其中tbl.name='Person'
它告诉我
ForeignKey
名称对于id
和orgId
表的Person
列是相同的。很明显,我缺少了一个额外的连接条件,但我一辈子都搞不清楚它是什么。您的查询缺少某些部分,要查看哪些列具有FK,您可以使用sys.foreign\u key\u columns
查看。
以下是您需要的:
SELECT
tbl.name TableName
, col.name ColumnName
, fk2.name ForeignKey
FROM
sys.tables tbl
JOIN sys.columns col
ON tbl.object_id = col.object_id
LEFT OUTER JOIN sys.foreign_key_columns AS fk
ON col.object_id = fk.parent_object_id
AND fk.parent_column_id = col.column_id
LEFT OUTER JOIN sys.foreign_keys AS fk2
ON fk2.object_id = fk.constraint_object_id
WHERE
tbl.name = 'Person';
能否将tbl.object\u id和tbl.schema\u id添加到选择列表中?