[ aleksandarpopov @ 25.05.2006. 18:22 ] @
Pozdrav!
Imam nekoliko pitanja:
1.Kako da izlistam sve tabele neke baze podataka? Tj. u kojoj sistemskoj tabeli mi se to nalazi?
2.Kako da odredim: koje kolone ima odredjena tabela, da li je kolona pk, fk, tip podatka, velicinu... i NAJVAZNIJE kako da odredim ime tabele na koju mi se foreign key referencira? Znaci nesto kao za datu tabelu i ime kolone da mi vrati ove metapodatke...
Hvala unapred, poz!
[ chachka @ 26.05.2006. 08:54 ] @
Slicna pitanja si nedavno postavljao za Firebird:)

Generalno, sve ti se nalazi u semama pg_catalog i/ili information_schema.

tabele
Code:

SELECT table_name
  FROM information_schema.tables
 WHERE table_schema = 'public'   -- konkretna sema
   AND table_type = 'BASE TABLE' -- (BASE TABLE, LOCAL TEMPORARY, VIEW)
 ORDER BY table_name


kolone
Code:

SELECT table_name, column_name, data_type
  FROM information_schema.columns
 WHERE table_schema = 'public'
 ORDER BY table_name, ordinal_position


primarni kljucevi
Code:

SELECT c.relname AS table_name,
       a.attname AS column_name,
       CASE WHEN t.typtype = 'd'
            THEN pg_catalog.format_type(t.typbasetype, NULL)
            ELSE pg_catalog.format_type(a.atttypid, NULL)
       END AS data_type
  FROM pg_class AS c
       JOIN pg_constraint AS o
             ON c.oid = o.conrelid
            AND o.contype = 'p'
       JOIN pg_attribute AS a
             ON a.attrelid = c.oid
            AND a.attnum = ANY (o.conkey)
       JOIN pg_namespace AS n
             ON n.nspname = 'public'
            AND c.relnamespace = n.oid
       JOIN pg_type AS t
             ON a.atttypid = t.oid
 ORDER BY c.relname, a.attnum


Ovo sam ja koristio u nekom svom programu. Foreign key mi nisu trebali pa ih zato ni ne saljem, a mrzi me da kopam po semama :)
[ aleksandarpopov @ 26.05.2006. 14:30 ] @
Hvala ti!
Pokusacu sam za fk, ako zapnem javicu...
Da, postavljao sam ovo pitanje i za Firebird ... nisam se jos odlucio sta da koristim za projekat na kom radim :)
Poz
[ chachka @ 27.05.2006. 07:18 ] @
Evo i foreign key
Code:

SELECT c.table_name, c.column_name, ctu.table_name AS references_table_name
  FROM information_schema.columns AS c
       INNER JOIN information_schema.key_column_usage AS kcu
          ON c.table_catalog = kcu.table_catalog
         AND c.table_schema = kcu.table_schema
         AND c.table_name = kcu.table_name
         AND c.column_name = kcu.column_name
         AND c.table_schema = 'public'
       INNER JOIN information_schema.table_constraints AS tc
          ON kcu.table_catalog = tc.table_catalog
         AND kcu.table_schema = tc.table_schema
         AND kcu.table_name = tc.table_name
         AND kcu.constraint_name = tc.constraint_name
         AND tc.constraint_type = 'FOREIGN KEY'
       INNER JOIN information_schema.constraint_table_usage AS ctu
          ON tc.constraint_catalog = ctu.constraint_catalog
         AND tc.constraint_schema = ctu.constraint_schema
         AND tc.constraint_name = ctu.constraint_name
 ORDER BY c.table_name, c.ordinal_position


Primary key pomocu inforation_schema
Code:

SELECT c.table_name, c.column_name
  FROM information_schema.columns AS c
       INNER JOIN information_schema.key_column_usage AS kcu
          ON c.table_catalog = kcu.table_catalog
         AND c.table_schema = kcu.table_schema
         AND c.table_name = kcu.table_name
         AND c.column_name = kcu.column_name
         AND c.table_schema = 'public'
       INNER JOIN information_schema.table_constraints AS tc
          ON kcu.table_catalog = tc.table_catalog
         AND kcu.table_schema = tc.table_schema
         AND kcu.table_name = tc.table_name
         AND kcu.constraint_name = tc.constraint_name
         AND tc.constraint_type = 'PRIMARY KEY'
 ORDER BY c.table_name, c.ordinal_position
[ aleksandarpopov @ 28.05.2006. 15:06 ] @
Hvala, ustedeo si mi dosta vremena!
Pozdrav!
[ miličić.marko @ 07.06.2006. 21:33 ] @
Vidi kako to radi phppgadmin...
[ abyss @ 27.08.2007. 10:22 ] @
Izvinjavam se sto izvlacim temu iz naftalina...
Kako izvuci precision i scale gde je tip numeric(18,2)[] - niz?

u tom slucaju upit za kolone daje data_type = array, udt_name = _numeric a scale i precision nista??!!?