2016-04-14 23 views
1

プライマリキーであるカラムをすべて検索する必要があります。Firebirdデータベースのプライマリキーであるすべてのカラム名を見つけよう

Firebirdの.net APIのConnection.GetSchema()メソッドでこれを実現する方法はありますか?そうでない場合は、これを達成するためにSQL文がどのように見えますか?

私は完全なコード例は必要ありませんが、それを行う方法に関するいくつかのガイダンスです。

私のシナリオでは、私はFirebird組込みデータベースを持っており、データベーススキーマからストアドプロダクツを生成したいと思います。トラッキングテーブルにメタデータを挿入するテーブルにトリガを生成するには、主キー列名が必要です。

は、私はあなたが私の問題についてより多くの情報が必要な場合はコメントしてください最新の.NETコネクタ(v.2.5.5)

でのFirebirdの最新バージョンを使用します!あなたのようなFirebirdのシステムテーブルを使用することができ、すべてのテーブルの主キーフィールドを選択するには

+0

* 'を主keys' *は、テーブルのすべての列 - 混乱を減らすために、唯一の存在である。** 1つの主キー**は1つ以上の列で構成されます(後者は複合主キー*と呼ばれることがあります) – Wolf

答えて

3

select 
    ix.rdb$index_name as index_name, 
    sg.rdb$field_name as field_name, 
    rc.rdb$relation_name as table_name 
from 
    rdb$indices ix 
    left join rdb$index_segments sg on ix.rdb$index_name = sg.rdb$index_name 
    left join rdb$relation_constraints rc on rc.rdb$index_name = ix.rdb$index_name 
where 
    rc.rdb$constraint_type = 'PRIMARY KEY' 
+0

インデックス名の代わりにテーブル名を取得するようにステートメントを変更しました。高速回答ありがとう! – Saladino

+0

ようこそ。テーブル名も追加しました。 –

関連する問題