获取表定义的Firebird SQL语句

Tho*_*ner 6 sql firebird

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

a_h*_*ame 11

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

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

编辑

"schema"是数据库中的命名空间.显然,您正在寻找表定义,而不是模式.

您可以通过查询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'
Run Code Online (Sandbox Code Playgroud)

数据类型存储为RDB $ FIELD列中的整数."Interbase参考指南"中记录了该列中的完整值列表:http://www.ibphoenix.com/files/60LangRef.zip(与该系统表中的所有其他列以及所有其他系统表一样).您可能需要浏览所有更新指南,以检查自IB 6.0以来系统表是否有任何更改(Firebird手册是一个**reall*混乱)