[ aleksandarpopov @ 19.05.2006. 19:26 ] @
Pozdrav,
Imam dva pitanja...
Nebitno da li preko Delphi-a i ado komponenti ili preko .NET providera da :
1. Kako da odredim da li je neka kolona tabele foreign key i na koju tabelu se referencira?
2.Kako da izlistam sve tabele koje mi se nalaze u nekoj bazi?
Hvala unapred,
poz
[ Mr. Rejn @ 21.05.2006. 20:08 ] @
Citat:
1. Kako da odredim da li je neka kolona tabele foreign key i na koju tabelu se referencira?

Pokusaj sa 'select * from rdb$relation_constraints;

Citat:
2.Kako da izlistam sve tabele koje mi se nalaze u nekoj bazi?

Pokusaj sa 'select * from rdb$relations';

Hint: vidi malo sistemske tabele (rdb$ prefiks).

O nalazenju sistemskih podataka u Firebird bazi moze ti koristiti ovaj clanak:
http://www.alberton.info/firebird_sql_meta_info.html


[Ovu poruku je menjao Mr. Rejn dana 22.05.2006. u 11:26 GMT+1]
[ Mr. Rejn @ 22.05.2006. 22:50 ] @
Sve o sistemskim tabelama i metapodacima moze se naci u dokumentu
koji se zove Langref.pdf koji se (valjda) moze naci negde na www.ibphoenix.com,
a sigurno ga ima u dokumentaciji na BCB6 diskovima.
[ aleksandarpopov @ 23.05.2006. 18:47 ] @
Za izlistavanje svih tabela sam nasao nesto na ibphoenix->FAQ za prelazak sa mysql -a, za fk jos nisam nista nasao, ako nadjem kako, postovacu.
Hvala svakako na pomoci....
BCB6 nemam, imam samo 5 :( , valda cu se snaci nekako ...
[ delalt @ 23.05.2006. 20:53 ] @
za Tables:
Code:
SELECT 
  RDB$RELATION_NAME 
FROM 
  RDB$RELATIONS 
WHERE 
  RDB$SYSTEM_FLAG = 0 AND RDB$VIEW_BLR IS NULL;

za Columns:
Code:
SELECT 
  RDB$FIELD_NAME 
FROM 
  RDB$RELATION_FIELDS 
WHERE 
  RDB$RELATION_NAME = 'TABELAX';

za Constraints:
Code:
SELECT 
  RDB$INDEX_NAME 
FROM 
  RDB$INDICES 
WHERE 
  RDB$RELATION_NAME = 'TABELAX' AND ( RDB$UNIQUE_FLAG IS NOT NULL OR RDB$FOREIGN_KEY IS NOT NULL );

vraća polja i tabele iz indeksa:
Code:
SELECT I.RDB$RELATION_NAME AS TABLENAME,
  S.RDB$FIELD_NAME AS FIELDNAME
FROM RDB$INDICES I
  LEFT JOIN RDB$INDEX_SEGMENTS S ON 
    (S.RDB$INDEX_NAME = I.RDB$INDEX_NAME)
WHERE (I.RDB$INDEX_NAME = 'IME_INDEKSA');

pogledaj još i sistemske tabele RDB$REF_CONSTRAINTS i RDB$RELATION_CONSTRAINTS i druge pa kombinuj i istestiraj.
[ aleksandarpopov @ 24.05.2006. 16:03 ] @
Hvala ti puno!
Poz!