0

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

4

2 回答 2

5

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

该表RDB$DEPENDENCIES具有以下列(在 Firebird 2.5 中):

  • RDB$DEPENDENT_NAME- “依赖”的名称(使用依赖的对象),例如存储过程名称
  • RDB$DEPENDED_ON_NAME- 依赖的名称(例如表名)
  • RDB$FIELD_NAME- 依赖项的字段名称(例如表列);可以NULL用于非字段依赖
  • RDB$DEPENDENT_TYPE- 依赖的类型(例如 0 = 关系(表或视图),请参阅RDB$TYPESwith 以RDB$FIELD_NAME = 'RDB$OBJECT_TYPE获取可能的值)
  • RDB$DEPENDED_ON_TYPE- 依赖的类型(列依赖的类型为 0RDB$FIELD_NAME且不为空,表/视图依赖的类型为 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'
于 2019-04-05T12:42:17.500 回答
2

在表中选择字段时,单击“字段依赖项”选项卡。

在此处输入图像描述

于 2019-04-05T14:47:41.743 回答