是否可以搜索字段的所有依赖项

Is it possible to search for all dependencies of a field

我正在我的数据库中搜索特定的行,想知道 ibexpert 中是否有一个函数来查找字段的所有依赖项。

我不知道 IBExpert,但一般在 Firebird 中,您可以在系统中找到依赖项 table RDB$DEPENDENCIES。它不会准确地告诉您在哪一行代码中使用了某个字段,但它会帮助您识别它在哪个对象中使用。然后检查该特定对象的源代码以查看它的使用位置。

table RDB$DEPENDENCIES 有以下列(在 Firebird 2.5 中):

  • RDB$DEPENDENT_NAME - 'dependent'(使用依赖项的对象)的名称,例如存储过程名称
  • RDB$DEPENDED_ON_NAME - 依赖项的名称(例如table名称)
  • RDB$FIELD_NAME - 依赖项的字段名称(例如 table 列);可以 NULL 对于非字段依赖性
  • RDB$DEPENDENT_TYPE - 依赖类型(例如 0 = 关系(table 或视图),请参阅 RDB$TYPESRDB$FIELD_NAME = 'RDB$OBJECT_TYPE 了解可能的值)
  • RDB$DEPENDED_ON_TYPE - 依赖项的类型(列依赖项的类型为 0 且 RDB$FIELD_NAME 不为空,table/view 依赖项的类型为 0 且 RDB$FIELD_NAME 为空。

例如,您可以使用以下查询:

select dep.*, tt.RDB$TYPE_NAME as DEPENDENT_OBJECT_TYPE, dt.RDB$TYPE_NAME as DEPENDED_ON_OBJECT_TYPE
from RDB$DEPENDENCIES dep
inner join RDB$TYPES tt
  on tt.RDB$TYPE = dep.RDB$DEPENDENT_TYPE 
    and tt.RDB$FIELD_NAME = 'RDB$OBJECT_TYPE'
inner join RDB$TYPES dt
  on dt.RDB$TYPE = dep.RDB$DEPENDED_ON_TYPE 
    and dt.RDB$FIELD_NAME = 'RDB$OBJECT_TYPE'

在 table 中选择字段后,单击 "Field dependencies" 选项卡。