ibppライブラリを使用して独自のFirebirdデータベースブラウザを作成しています。SQLステートメントを使用してテーブル定義を取得する方法はありますか?
11645 次
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 table_name; 例えば:
SHOW TABLE users
于 2018-10-02T09:01:40.290 に答える