目錄
2。 PostgresQL :使用PG_依賴和信息模式
3。甲骨文:使用all_ depentencies
4。 MySQL :有限的依賴性跟踪
通過數據庫摘要
首頁 資料庫 SQL 如何在SQL中找到表的依賴性或視圖?

如何在SQL中找到表的依賴性或視圖?

Aug 22, 2025 pm 02:34 PM

SQL Server:查詢sys.sql_expression_depentencies,以查找參考對象,例如過程,視圖或函數。 2。 postgresql:使用pg_ dectip to pg_rewrite或搜索pg_views.definition以獲取參考。 3。 oracle:query all_dependencies,引用_name與表匹配。 4。 mySQL:搜索信息_schema.views and Information_schema.routines,for off'%table_name%'模式。 5。始終考慮模式,並註意可能不會跟踪動態SQL依賴關係,而在無法使用元數據時,文本搜索用作後備方法。

如何在SQL中找到表的依賴性或視圖?

在SQL中查找表或視圖的依賴關係取決於您正在使用的數據庫系統,因為每個數據庫系統都有自己的系統視圖或跟踪對象依賴性的目錄表。以下是主要SQL數據庫的常見方法。

如何在SQL中找到表的依賴性或視圖?

1。 SQLServer:使用sys.sql_expression_dependencies

在SQL Server中,您可以查詢sys.sql_expression_dependencies以查找取決於特定表或視圖的對象。

選擇 
    referencing_schema_name,
    referencing_entity_name,
    REFENCENCING_CLASS_DESC
來自sys.sql_expression_depentencies
white reference_entity_name ='yourTableName';

'YourTableName'替換為表格或視圖的實際名稱。

如何在SQL中找到表的依賴性或視圖?

這顯示了引用指定對象的存儲過程,視圖,功能等。

您也可以加入sys.objects以獲取更多詳細信息:

如何在SQL中找到表的依賴性或視圖?
選擇不同的
    schema_name(o.schema_id)為schema_name,
    o.name作為object_name,
    o.type_desc作為object_type
來自sys.sql_expression_depentencies d
加入sys.objects o on d.referencing_id = o.object_id
d.refercred_entity_name ='yourTableName';

2。 PostgresQL :使用PG_依賴和信息模式

PostgreSQL直接將高級依賴項信息直接存儲在用戶友好的視圖中,但是您可以將pg_dependpg_rewrite一起用於視圖。

對於查看依賴項,一種更簡單的方法是:

選擇 
    依賴_ns.nspname為依賴_schema,
    依賴性_view.relname為依賴_view
來自pg_依賴 
加入pg_depper.objid上的pg_rewrite = pg_rewrite.oid 
在pg_rewrite.ev_class = divedent_view。 
加入pg_class作為source_table在pg_depper.refobjid = source_table.oid上 
加入pg_namespace divedent_ns on depentent_ns.oid = depentent_view.relnamespace 
加入pg_namespace source_ns on source_ns.oid = source_table.relnamespace 
在哪裡 
    source_table.relname ='your_table_name'
    和source_ns.nspname ='public'; - 如果需要,請更改模式

另外,請在psql中使用\d table_name命令查看基本引用。

對於更高級的情況,請考慮使用:

選擇 
    quote_ident(nspName)|| '。 ' || quote_ident(viewname)作為視圖,
    定義
來自pg_views
定義iLike'%your_table_name%';

⚠️這是一個文本搜索,可能具有誤報,但可以進行快速檢查。


3。甲骨文:使用all_ depentencies

在oracle中,查詢ALL_DEPENDENCIES視圖:

選擇 
    所有者,
    姓名,
    類型
來自all_依賴性
white rufenceed_name ='your_table_name'
  並在('table','view')中引用_type;

除非用引號創建表格,否則請確保表名在大寫。

包括模式(所有者):

並引用_owner ='schema_name';

4。 MySQL :有限的依賴性跟踪

MySQL不像其他RDBM一樣保持詳細的依賴性元數據。您需要依靠:

  • 信息_schema.Views for Views:
選擇table_schema,table_name
來自Information_Schema.Views
view_definition如'%your_table_name%';
  • 用於存儲過程或功能:
選擇例程_schema,retarine_name,retarine_type
來自Information_schema.Routines
rudine_definition(例如'%your_table_name%'';

⚠️這是一種模式匹配,而不是100%可靠 - 它可能會錯過案例或返回錯誤的命中。


5。一般提示

  • 查詢系統表時始終考慮模式/所有者
  • 可能不會跟踪某些依賴項(例如來自Dynamic SQL的依賴項)。
  • 對於生產系統,請考慮使用數據庫文檔工具(例如,Redgate,DBT,ERD工具)來解析和可視化依賴關係。

通過數據庫摘要

資料庫 關鍵方法
SQL Server sys.sql_expression_dependencies
Postgresql pg_depend pg_rewritepg_views中的文本搜索
Oracle ALL_DEPENDENCIES
mysql INFORMATION_SCHEMA.VIEWSROUTINES中的文本搜索

基本上,這是關於了解系統的元數據表 - 如有疑問, LIKE '%table_name%'搜索之類的位置時,搜索可以作為後備。

以上是如何在SQL中找到表的依賴性或視圖?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP教程
1600
276
您如何計算SQL中兩個日期之間的差異? 您如何計算SQL中兩個日期之間的差異? Aug 02, 2025 pm 01:29 PM

要計算兩個日期之間的差值,需根據數據庫類型選擇相應函數:1.在MySQL中使用DATEDIFF()計算天數差,或TIMESTAMPDIFF()指定單位如HOUR、MINUTE;2.在SQLServer中使用DATEDIFF(date_part,start_date,end_date)並指定單位;3.在PostgreSQL中通過直接相減得到天數差,或使用EXTRACT(DAYFROMAGE(...))獲取更精確間隔;4.在SQLite中利用julianday()函數相減得出天數差;始終注意日期順序

SQL中的BLOB和CLOB數據類型是什麼? SQL中的BLOB和CLOB數據類型是什麼? Aug 07, 2025 pm 04:22 PM

BLOBstoresbinarydatalikeimages,audio,orPDFsasrawbyteswithoutcharacterencoding,whileCLOBstoreslargetextsuchasarticlesorJSONusingcharacterencodinglikeUTF-8andsupportsstringoperations;2.Bothcanhandleuptogigabytesofdatadependingonthedatabase,butperforman

通過查詢性能優化SQL訂單 通過查詢性能優化SQL訂單 Aug 04, 2025 am 11:19 AM

要優化SQL中ORDERBY的性能,首先要理解其執行機制並合理利用索引和查詢結構。當排序字段無索引時,數據庫會觸發“filesort”,消耗大量資源;因此應避免對大表直接排序,並通過WHERE條件減少排序數據量。其次,為排序字段建立匹配順序的索引,可大幅加速查詢,如在MySQL8.0 創建倒序索引提升效率。此外,深分頁(如LIMIT1000,10)應改用基於索引的游標分頁(如WHEREid>12345),以跳過無效掃描。最後,結合緩存、異步聚合等手段也可進一步優化大數據集場景下的排序性能。

您如何在SQL中授予和撤銷權限? 您如何在SQL中授予和撤銷權限? Aug 04, 2025 am 09:19 AM

GRANTandREVOKEstatementsareusedtomanageuserpermissionsinSQL.1.GRANTprovidesprivilegeslikeSELECT,INSERT,UPDATE,DELETE,ALTER,EXECUTE,orALLPRIVILEGESondatabaseobjectstousersorroles.2.SyntaxforgrantingisGRANTprivilege_typeONobject_nameTOuser_or_role,allo

與SQL中的運算符相比,運算符的存在如何? 與SQL中的運算符相比,運算符的存在如何? Aug 05, 2025 pm 01:08 PM

useexists forexistenceChecks,尤其是WithlargeorCorrecoredsubqueries and whennullvaluesarepresent,AsitStopsatthefirstthefirstmatchandhandhandlesnullssafely; usiseInformembersHipshipsagainstsmall,已知

如何在SQL中獲得一年中的第一天和最後一天? 如何在SQL中獲得一年中的第一天和最後一天? Aug 11, 2025 pm 05:42 PM

ThefirstdayoftheyearisobtainedbyconstructingortruncatingtoJanuary1stofthegivenyear,andthelastdayisDecember31stofthesameyear,withmethodsvaryingbydatabasesystem;2.Fordynamiccurrentyeardates,MySQLusesDATE_FORMATorMAKEDATE,PostgreSQLusesDATE_TRUNCorDATE_

如何在SQL中找到列的總和? 如何在SQL中找到列的總和? Aug 08, 2025 pm 05:54 PM

tofindthemofacolumninsql,usetheSum()函數,whoturnsthetthetaTaLnumericValuesInaspeCifiedColumnWhileIgnoringNulls; 1.UseBasicSyntax:selectsum(column_name)asaliasfromtable_name; 2.seletheletheletheetecoLumnHasnumerceLemercerectatoRorrorrorrorrorrorrorrorrorrorrorrorrorrorrorrorrorrorrorrorror;

了解SQL執行上下文和權限 了解SQL執行上下文和權限 Aug 16, 2025 am 08:57 AM

SQL執行上下文是指運行SQL語句時的身份或角色,決定能訪問哪些資源及操作權限。權限設置應遵循最小權限原則,常見權限包括SELECT、INSERT、EXECUTE等。排查權限問題需確認登錄名、角色權限、EXECUTEAS設置及schema授權。執行上下文切換可通過EXECUTEAS實現,但需注意用戶存在性、權限授予及性能安全影響。建議避免隨意賦予db_owner或sysadmin角色,應用賬號應僅訪問必要對象,並通過schema統一授權。

See all articles