【问题标题】:To see whether a column of a table is been used somewhere in the database [duplicate]查看是否在数据库中的某处使用了表的列[重复]
【发布时间】:2017-08-04 11:48:39
【问题描述】:

如何检查表的特定列是否在任何其他对象中使用或没有在Oracle中?例如,我有一个表 EMPLOYEE,其中有一列 BONUS。我需要检查该表的这一列是否被数据库中的任何其他对象(如 ViewPackage 等)使用。

【问题讨论】:

  • 看看这个link,说不定就是你想要的
  • 你试过了吗?对于函数、proc 或包等程序单元,您可以查询 all_source/dba_source/user_source,但这可能会很棘手,因为程序可能没有明确引用列名。引用中列的使用(外键关系)可以在 all_constraints 中检查。

标签: sql database oracle plsql


【解决方案1】:

您可以尝试以下 SQL 来检查对象定义中使用的表和列

SELECT 1
  FROM all_source
 WHERE type IN ('PROCEDURE','PACKAGE BODY','FUNCTION')
   AND text LIKE '%EMPLOYEE%'
   AND text LIKE '%BONUS%';

【讨论】:

  • 该方法只识别表名和列名在同一行的情况。
  • 可以用OR代替
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多