列出Firebird数据库的所有未使用的域

Adr*_*son 6 firebird

是否有一种快速方法可以列出为数据库定义的所有Firebird域,这些域实际上并未被任何字段使用?我有一个包含许多表和许多域的大型数据库,似乎很多都不再使用了,所以我想是时候进行清理了!

我认为这可以通过查询RDB$...系统表来实现,但我不确定如何做到这一点.

And*_*jeŭ 6

SELECT
  f.rdb$field_name
FROM
  rdb$fields f
  LEFT JOIN rdb$relation_fields rf
    ON rf.rdb$field_source = f.rdb$field_name
WHERE
  rf.rdb$field_name IS NULL
  AND
  COALESCE(f.rdb$system_flag, 0) = 0
Run Code Online (Sandbox Code Playgroud)

  • 您可以在`RDB $ PROCEDURE_PARAMETERS`中添加类似的join + where条件 (2认同)