获取表定义的Firebird SQL语句

时间:2012-06-08 08:26:29

标签: sql firebird

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

2 个答案:

答案 0 :(得分: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'

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

答案 1 :(得分:0)

SHOW TABLE table_name; 例如:

  

SHOW TABLE users