我正在数据库中搜索特定行,并想知道ibexpert中是否有一个函数来查找字段的所有依赖项。
答案 0 :(得分:2)
答案 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$TYPES
和RDB$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'