1
我需要按層次順序列出我的數據庫(PostgreSQL)的所有表。 這意味着:如果表「用戶」具有表「角色」的外鍵,則它必須在列表中的「角色」之後。在以PostgreSQL - 所有表的分層列表
等價的東西:
EXEC sp_msdependencies @intrans = 1
在SQL Server。
我試過,但沒有成功:
SELECT
pt.table_name as tablename,
string_agg(DISTINCT ccu.table_name, ',') AS reftable
FROM information_schema.tables pt
LEFT JOIN information_schema.columns c
ON c.table_name = pt.table_name
LEFT JOIN information_schema.table_constraints tc
ON tc.table_name = pt.table_name AND tc.constraint_type = 'FOREIGN KEY'
LEFT JOIN information_schema.key_column_usage AS kcu
ON tc.constraint_name = kcu.constraint_name AND kcu.column_name = c.column_name
LEFT JOIN information_schema.constraint_column_usage AS ccu
ON ccu.constraint_name = tc.constraint_name
WHERE pt.table_schema = 'public'
GROUP BY pt.table_name,pt.table_type
ORDER BY pt.table_type DESC, COUNT(TRUE) ASC;
嗯,謝謝您的回答。但是,您的示例不會返回任何內容,只是始終「查詢正在運行」而沒有結束。 :D –
@Marcelo:你有循環引用嗎?如果是這樣,沒有辦法訂購它們。 –