我有一個包含大約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