我有一個表,名爲Member
,列名爲Member_Id
。獲取所有從屬表的所有外鍵的一個表到第n級
此表由超過23個其他表作爲主表推薦,Member_Id
作爲外部列。
現在這23個表也有主鍵,有些還可以作爲其他表的主表。
所以我想要提取所有依賴表的所有外鍵參考表Member
。
我的目標是截斷有外碼的Member
表。我無法使用刪除功能,因爲這些表格有更多數據,所以刪除數據可能需要很長時間。
例如: -
會員 - >會員-ID
Member-Contact
與Member
表連接使用Member_ID,主鍵Contact_No
Member_Population
與Member
表使用Member_ID連接,主鍵population_seq_no
... 23更多
這些Member-Contact
,Member_Population
和23更多也有依賴表與其他表作爲外鍵。
所以在截斷之前,我需要刪除所有外鍵然後截斷所有這些從屬表然後恢復這些外鍵。
直到現在我寫此查詢其獲取所有外鍵一個表
SELECT ROW_NUMBER() Over(Order BY f.parent_object_id) as RowID,
OBJECT_NAME(f.parent_object_id) TableName,
COL_NAME(fc.parent_object_id,fc.parent_column_id) ColName,
f.name as FKConstraintName,
COL_NAME(fc.referenced_object_id,fc.referenced_column_id) as ReferenceColName
--INTO #temp_ReferenceContstraints
FROM sys.foreign_keys AS f
INNER JOIN sys.foreign_key_columns AS fc ON f.OBJECT_ID = fc.constraint_object_id
INNER JOIN sys.tables t ON t.OBJECT_ID = fc.referenced_object_id
WHERE OBJECT_NAME (f.referenced_object_id) = 'Member'
我想找到所有相關表的外鍵?
爲什麼你不使用'sql server'中所有依賴表的用戶界面? – 2015-03-13 13:12:29
http://blog.sqlauthority.com/2010/02/04/sql-server-get-the-list-of-object-dependencies-sp_depends-and-information_schema-routines-and-sys-dm_sql_referencing_entities/ – 2015-03-13 13:20:34
那麼你可以獲取您所查詢的結果,在結果上運行遊標並在每個表上運行相同的查詢;你可以遞歸地設置它,以便它達到N級。 – 2015-03-13 13:26:48