2016-04-14 34 views
1

Bir tabloda birincil sütunlar olan tüm sütunları bulmalı ve sütun adlarını döndürmeliyim.Firebird veritabanında birincil anahtar olan tüm sütun adlarını bul

Bunu Firebird .net API'sinin Connection.GetSchema() yöntemi ile başarabileceğim bir yol var mı? Değilse, bir SQL ifadesi bunu nasıl başarır?

Tam bir kod örneğine, ancak nasıl yapılacağına dair bir kılavuza ihtiyacım yok.

Benim senaryoda Firebird yerleşik bir veritabanım var ve veritabanı şemasından depolanmış prodecures oluşturmak istiyorum. Bir izleme tablosuna bazı meta verileri ekleyen bir tabloda tetikleyiciler oluşturmak için birincil anahtar sütun adlarına ihtiyacım var.

Benim sorun hakkında daha fazla bilgiye ihtiyaç duyarsanız lütfen yorum son .net konektör (v.2.5.5)

ile Firebird en son sürümünü kullanın! ** sadece orada karışıklığı azaltmak için - birincil keys` * olduğu bir tabloda

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

* 'tüm sütunların: – Wolf

cevap

3

sizin gibi Firebird sistem tabloları kullanabileceğiniz tüm tabloların birincil anahtar alanları seçmek için Bir veya daha fazla sütundan oluşan bir tablo başına bir birincil anahtar ** (ikincisi genellikle * bileşik birincil anahtar olarak adlandırılır *)
+0

Dizin adınız yerine tablo adını almak için ifadenizi değiştirdim ve şimdi çalışıyor. Hızlı cevap için teşekkürler! – Saladino

+0

Bir şey değil. Tablo adını da ekledim. –