8

我正在使用 ibpp 库编写自己的 Firebird 数据库浏览器。有没有办法可以使用 SQL 语句获取表定义?

4

2 回答 2

12

Firebird 不支持模式,因此您无法获取该信息。

最接近的可能是所有者,您可以通过查询获得RDB$RELATIONS

编辑

“模式”是数据库内的命名空间。显然您正在寻找表定义,而不是模式。

您可以通过查询 RDB$FIELDS 和 RDB$RELATION_FIELDS 来检索表的列及其数据类型:

select rf.rdb$relation_name as table_name, 
       rf.rdb$field_name as column_name,
       case f.rdb$field_type
         when 14 then 'CHAR'
         when 37 then 'VARCHAR'
         when 8 then 'INTEGER'
         ...
       end as data_type,
       f.rdb$field_length,
       f.rdb$field_scale
from rdb$fields f
  join rdb$relation_fields rf on rf.rdb$field_source = f.rdb$field_name
where rf.rdb$relation_name = 'FOOBAR'

数据类型以整数形式存储在 RDB$FIELD 列中。该列中值的完整列表记录在 Interbase 参考指南中: http: //www.ibphoenix.com/files/60LangRef.zip(该系统表中的所有其他列和所有其他系统表也是如此)。您可能需要查看所有更新指南,以检查自 IB 6.0 以来系统表是否有任何更改(Firebird 手动是一个**真正的*混乱)

于 2012-06-08T08:46:07.507 回答
2

显示表表名;例如:

SHOW TABLE users

于 2018-10-02T09:01:40.290 回答