gpt4 book ai didi

sql-server - 给定外键,我如何找到使用该特定键的所有表?

转载 作者:行者123 更新时间:2023-12-04 00:35:20 26 4
gpt4 key购买 nike

我有一列 (myColumn) 作为表 (tableA) 的主键。我注意到有 2 或 3 个表将此 myColumn 引用为外键。我如何检测所有使用和引用 myColumn 的表?

我猜测超过 3 个表使用 myColumn,因为当我尝试像这样更新它时

UPDATE tableA
SET myColumn = 1
WHERE myColumn = 1

更新了 6 行。

之前有人建议我使用

sp_helpconstraint('your_table_name')

但后来我发现这并没有提供我需要的完整信息。

还有其他建议吗?

最佳答案

试试这个 - 这是最新的 SQL Server 2005 和 Mitch 链接到的我的原始答案的更新版本(那是针对 SQL Server 2000 的):

SELECT
ConstraintName = fk.name,
TableName = t.name,
ColumnName = c.name
FROM
sys.foreign_keys fk
INNER JOIN
sys.foreign_key_columns fkc ON fkc.constraint_object_id = fk.object_id
INNER JOIN
sys.tables t ON fk.parent_object_id = t.object_id
INNER JOIN
sys.columns c ON fkc.parent_object_id = c.object_id AND fkc.parent_column_id = c.column_id
INNER JOIN
sys.tables tref ON fk.referenced_object_id = tref.object_id
INNER JOIN
sys.columns cref ON fkc.referenced_object_id = cref.object_id AND fkc.referenced_column_id = cref.column_id
WHERE
tref.Name = 'Person'
AND cref.Name = 'OID'

它使用系统目录 View sys.foreign_keyssys.foreign_key_columns找出哪些表/列引用了您感兴趣的表和列。

您基本上只需在 WHERE 中输入表名和列名即可子句 - 您将获得引用该表/列的其他表/列的列表

关于sql-server - 给定外键,我如何找到使用该特定键的所有表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9059814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com