我正在我的数据库中搜索特定行,并想知道 ibexpert 中是否有一个函数来查找字段的所有依赖项。
问问题
1075 次
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$TYPES
with 以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 回答