simulace MySQL na Postgresu
Karel Zak
kzak na redhat.com
Úterý Srpen 2 09:00:39 CEST 2005
On Mon, 2005-08-01 at 18:35 +0200, Petr Skoda wrote:
> Ale bohuzel Postgres neumi ani toto ani jinde bezne
> "select columns from tabulka".
Ma katalog, kde je vse popsane. Je lepsi pouzivat standardni prostredky nez implementovat
nejake specialni a pouze pro "vnitrnosti" SQL serveru pouzitelne prikazy.
Nemusite pouzivat primo OID, ale pretypovat z nazvu na OID:
SELECT attname FROM pg_attribute
WHERE attrelid = 'mytable'::regclass;
vrati seznam sloupcu vasi tabulky. Pokud budete chtit i datove typy pak:
SELECT attname, atttypid::regtype, attlen FROM pg_attribute
WHERE attrelid = 'mytable'::regclass;
jinak viz. http://www.postgresql.org/docs/8.0/interactive/datatype-oid.html
(chodi to i u 7.4).
Pokud pouzivate schemata tak je vhodne dat jeho nazev k nazvu tabulky
(napr. 'public.mytable'::regclass).
> testreticon=# \d reticon
> ********* QUERY **********
> SELECT c.oid,
> n.nspname,
> c.relname
> FROM pg_catalog.pg_class c
> LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
> WHERE pg_catalog.pg_table_is_visible(c.oid)
> AND c.relname ~ '^reticon$'
> ORDER BY 2, 3;
> **************************
Coz znamena -- vrat seznam oid, schemat(?) a nazvu viditelnych tabulek.
> ********* QUERY **********
> SELECT relhasindex, relkind, relchecks, reltriggers, relhasrules
> FROM pg_catalog.pg_class WHERE oid = '17218'
> Vubec tomu nerozumim, napr jak najdu ze mam pouzit 17218 ,
To cislo je OID tabulky (nasel ho v tom prvnim dotazu) -- vsechny
tabulky jsou popsane v pg_class a jejich sloupce v pg_attribute.
> Navic ta funkce vraci i indexy apod, takze to stale neni ono
Vraci o co se pozada :-)
Karel
--
Karel Zak <kzak na redhat.com>
Další informace o konferenci Linux