From: | Kevin Gordon <kgordon(at)paradise(dot)net(dot)nz> |
---|---|
To: | pgsql-sql(at)postgresql(dot)org |
Subject: | SQL to determine Tablenames, Primarykeys & Foreignkeys] |
Date: | 2003-01-04 03:57:09 |
Message-ID: | 1041652653.17139.6.camel@kg15.kgdomain.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Thanks to previous help I am using:
$sql = "SELECT " .
"ic.relname AS index_name, " .
"bc.relname AS tab_name, " .
"ta.attname AS column_name, " .
"i.indisunique AS unique_key, " .
"i.indisprimary AS primary_key " .
"FROM " .
"pg_class bc, " .
"pg_class ic, " .
"pg_index i, " .
"pg_attribute ta, " .
"pg_attribute ia " .
"WHERE " .
"bc.oid = i.indrelid " .
"AND ic.oid = i.indexrelid " .
"AND ia.attrelid = i.indexrelid " .
"AND ta.attrelid = bc.oid " .
"AND bc.relname = '" . $tablename . "' " .
"AND ta.attrelid = i.indrelid " .
"AND ta.attnum = i.indkey[ia.attnum-1] " .
"ORDER BY " .
"index_name, tab_name, column_name";
which provides primary keys 100%.
I have written the following to obtain tablenames:
$sql = "SELECT " .
"ic.relname " .
"FROM " .
"pg_class ic " .
"WHERE " .
"ic.relname not like 'pg%' " .
"AND ic.relname not like '%pk' " .
"AND ic.relname not like '%idx' ";
which I am not certain is complete but appears to work.
Could anyone help me with the SQL to retrieve Foreign Keys for a
particular Table?
Much appreciated.
Kevin Gordon
From | Date | Subject | |
---|---|---|---|
Next Message | Stephan Szabo | 2003-01-04 15:16:25 | Re: Reference integrity question |
Previous Message | Daniel Bruce Lynes | 2003-01-03 17:27:28 | Compiling pl/pgsql functions? |