我有一个包含大约200个表的外键约束的数据库。数据库中没有数据,我需要将行插入指定的表X
。查找所有防止插入到SQL Server中的表的外键
由于许多外键我不知道如何插入其他表的顺序,以便我可以插入表X
。一些外键约束是分层的。
如何找到插入的顺序,以便我可以成功地将数据插入表X
?有没有任何SQL查询可以帮助我?
编辑 我想导致与列“表名”表中,“ParentTableDependece”,显示树形视图,并能得到从中选择
我有一个包含大约200个表的外键约束的数据库。数据库中没有数据,我需要将行插入指定的表X
。查找所有防止插入到SQL Server中的表的外键
由于许多外键我不知道如何插入其他表的顺序,以便我可以插入表X
。一些外键约束是分层的。
如何找到插入的顺序,以便我可以成功地将数据插入表X
?有没有任何SQL查询可以帮助我?
编辑 我想导致与列“表名”表中,“ParentTableDependece”,显示树形视图,并能得到从中选择
使用这个片段中,你可以找到所有其他表和国外参与引用自己的表X
键:
;WITH ReferencingFK AS
(
SELECT
fk.Name AS 'FKName',
OBJECT_NAME(fk.parent_object_id) 'ParentTable',
cpa.name 'ParentColumnName',
OBJECT_NAME(fk.referenced_object_id) 'ReferencedTable',
cref.name 'ReferencedColumnName'
FROM
sys.foreign_keys fk
INNER JOIN
sys.foreign_key_columns fkc ON fkc.constraint_object_id = fk.object_id
INNER JOIN
sys.columns cpa ON fkc.parent_object_id = cpa.object_id AND fkc.parent_column_id = cpa.column_id
INNER JOIN
sys.columns cref ON fkc.referenced_object_id = cref.object_id AND fkc.referenced_column_id = cref.column_id
)
SELECT
FKName,
ParentTable,
ParentColumnName,
ReferencedTable,
ReferencedColumnName
FROM
ReferencingFK
WHERE
ReferencedTable = 'X' -- <=== put your table name here!
ORDER BY
ParentTable, ReferencedTable, FKName
一旦你有参考X
的所有表,你可能还需要重复这一过程,其他表(如果它们又取决于外键引用)
我运行这个查询,但没有结果返回 – 2013-04-08 07:58:38
这就像一个魅力! – shashi 2013-06-10 01:57:24
你可以试试:
EXEC sp_help 'TableName'
这会给你的表的整个细节即可以拿到关系,索引和你通过与它的对象相关的其他信息。
嗨,Iswanto San,你能指定,你在上面的答案中编辑了什么。 – khush 2013-04-10 04:35:51
为什么不能这样?
EXEC sp_msdependencies @objname = 'X'
拉吉
这是好的,但不显示等级依赖 – 2013-04-08 07:56:13
你是什么意思?输出中的oSequence列应该告诉你关系的级别。 – Raj 2013-04-08 08:12:25
我希望结果在一个**表**,列“TableName”,“ParentTableDependece”显示树视图,并可以从中选择它 – 2013-04-10 09:24:24
看 “表X的” 在SQL Server Management Studio中的依赖关系,并期待在 “依赖此对象”。 – 2013-04-08 04:07:12
是的..你在句子中大写每个世界,但没有问题的标题.. :) – 2013-04-08 04:07:48
右键单击表格,然后点击查看依赖项 – 2013-04-08 04:21:13