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

时间:2019-04-04 09:53:53

标签: firebird ibexpert

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

2 个答案:

答案 0 :(得分:2)

在表格中选择字段后,请点击“字段依赖项”标签。

enter image description here

答案 1 :(得分:1)

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

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

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

作为示例,您可以使用以下查询:

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'