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 table_name; 例えば:

SHOW TABLE users

于 2018-10-02T09:01:40.290 に答える