我正在使用ibpp库编写自己的Firebird数据库浏览器。有没有办法可以使用SQL语句获取表定义?
答案 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