Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 确定SQL Server外键名称_Sql Server_Foreign Keys_Database Schema - Fatal编程技术网

Sql server 确定SQL Server外键名称

Sql 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 左外

我试图确定表上外键的名称,但得到了错误的值。如果我使用这个示例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
左外部联接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添加到选择列表中?