2012-06-08 13 views

cevap

9

Firebird şemaları desteklemiyor, bu nedenle bu bilgileri edinmenin bir yolu yok.

yakın şey bir veritabanı içinde bir ad alanıdır RDB$RELATIONS

Düzenleme

Bir "şema" sorgulayarak alabilirsiniz sahibi, olabilir. Görünüşe göre şema değil, tablo tanımını arıyorsun.

Sen RDB $ FIELDS ve RDB $ RELATION_FIELDS sorgulayarak bir tablonun colums ve bunların veri türlerini alabilirsiniz:

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' 

veri türü sütununda RDB $ ALAN bir tamsayı olarak saklanır. Bu sütundaki değerlerin tam listesi Interbase Referans Kılavuzu'nda (http://www.ibphoenix.com/files/60LangRef.zip) (bu sistem tablosunda ve diğer tüm sistem tablolarındaki diğer tüm sütunlarda olduğu gibi) belgelenmiştir. IB 6.0'dan beri sistem tablolarında herhangi bir değişiklik olup olmadığını kontrol etmek için tüm güncelleme kılavuzlarını gözden geçirmeniz gerekebilir (Firebird manualy bir ** reall * karışıklık)

İlgili konular