On Fri, 2004-05-28 at 06:07, Ramanujam H S Iyengar wrote: > Can some one help me in the question !!! > > Given the Oid of a relation .. how to get the Oid of the Primary key index > on that relation ? > Attached, a couple of function I wrote that might do what you're after. > > Thanks in adv, > > -Ramu > > _________________________________________________________________ > Post Classifieds on MSN classifieds. http://go.msnserver.com/IN/44045.asp > Buy and Sell on MSN Classifieds. > > > ---------------------------(end of broadcast)--------------------------- > TIP 4: Don't 'kill -9' the postmaster
Regards, John
-- -- PostgreSQL database dump -- SET SESSION AUTHORIZATION 'postgres'; -- -- select pk_column('tablename'); -- returns the name of the primary key column -- CREATE FUNCTION pk_column(text) RETURNS text AS ' select attname::text from pg_class, pg_constraint, pg_attribute where pg_class.oid = conrelid and contype=''p'' and attrelid = pg_class.oid and attnum in (array_to_string(conkey,'','')) and relname=$1; ' LANGUAGE sql STABLE; -- -- select last_insert_id('tablename','columnname'); -- returns currval of the sequence assigned as default to columnname -- CREATE FUNCTION last_insert_id(text, text) RETURNS bigint AS ' select currval( (select split_part(adsrc,'''''''',2) as seq from pg_class join pg_attribute on (pg_class.oid = pg_attribute.attrelid) join pg_attrdef on (pg_attrdef.adnum = pg_attribute.attnum and pg_attrdef.adrelid = pg_attribute.attrelid) where pg_class.relname = $1 and pg_attribute.attname = $2) ); ' LANGUAGE sql; -- -- select last_insert_id('tablename'); -- returns currval of the sequence assigned as default to the primary key column -- CREATE FUNCTION last_insert_id(text) RETURNS bigint AS ' select last_insert_id($1,pk_column($1)); ' LANGUAGE sql;
---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives? http://archives.postgresql.org