From: | "Ries van Twisk" <ries(at)jongert(dot)nl> |
---|---|
To: | "'A(dot)Bhuvaneswaran'" <bhuvansql(at)myrealbox(dot)com>, <rvt(at)dds(dot)nl> |
Cc: | <pgsql-sql(at)postgresql(dot)org> |
Subject: | Re: The need to know if a field is using/connected to a sequence |
Date: | 2003-04-10 12:24:00 |
Message-ID: | 002e01c2ff5c$119ed050$f100000a@IT001 |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Hi,
I found the answer in pgAdminII (I should have known this...),
I currently do it in a two step process (I need to know info about
sq_logile):
1) first get the oid of the table I like to know something about:
SELECT oid, relname, pg_get_userbyid(relowner) as tableowner, relacl,
relhasoids FROM pg_class WHERE ((relkind = 'r') OR (relkind = 's')) and
relname = 'sq_logfile' ORDER BY relname
2) Now fill in the number 157554 and get the table result, I got the 157554
iod from the above SQL.
SELECT 0::oid AS oid, a.attname, a.attnum, CASE WHEN (t.typlen = -1 AND
t.typelem != 0) THEN (SELECT at.typname FROM pg_type at WHERE at.oid =
t.typelem) || '[]' ELSE t.typname END AS typname, CASE WHEN ((a.attlen = -1)
AND ((a.atttypmod)::int4 = (-1)::int4)) THEN (0)::int4 ELSE CASE WHEN
a.attlen = -1 THEN CASE WHEN ((t.typname = 'bpchar') OR (t.typname = 'char')
OR (t.typname = 'varchar')) THEN (a.atttypmod -4)::int4 ELSE
(a.atttypmod)::int4 END ELSE (a.attlen)::int4 END END AS length,
a.attnotnull, (SELECT adsrc FROM pg_attrdef d WHERE d.adrelid = a.attrelid
AND d.adnum = a.attnum) AS default, (SELECT indisprimary FROM pg_index i,
pg_class ic, pg_attribute ia WHERE i.indrelid = a.attrelid AND i.indexrelid
= ic.oid AND ic.oid = ia.attrelid AND ia.attname = a.attname AND
indisprimary IS NOT NULL ORDER BY indisprimary DESC LIMIT 1) AS primarykey,
a.attstattarget FROM pg_attribute a, pg_type t WHERE a.atttypid = t.oid AND
attrelid = 157554::oid ORDER BY attnum
Hope this will help others aswell..
Ries
> -----Oorspronkelijk bericht-----
> Van: pgsql-sql-owner(at)postgresql(dot)org
> [mailto:pgsql-sql-owner(at)postgresql(dot)org]Namens A.Bhuvaneswaran
> Verzonden: donderdag 10 april 2003 10:26
> Aan: Ries van Twisk
> CC: pgsql-sql(at)postgresql(dot)org
> Onderwerp: Re: [SQL] The need to know if a field is
> using/connected to a
> sequence
>
>
> > I currently use this to get field information of a table:
> > Now I just want to know (boolean field maby??) if a field
> is using/connected
> > to q sequence or not.
> > Which table should I access to get this information
>
> How can a boolean field use/connect q sequence? I got that you want to
> know the fields which use sequence for their default value.
> If i am right,
> here is the solution. The default value details are in
> pg_attrdef table.
>
> SELECT
> a.attnum,
> c.relname,
> a.attname,
> d.adsrc as default
> from
> pg_attribute a,
> pg_class c,
> pg_attrdef d
> where
> a.attrelid = c.oid
> and a.attnum = d.adnum
> and d.adrelid = c.oid
> and a.attnum > 0
> and c.relname = 'your_table_name'
> and d.adsrc ~* 'your_sequence_name'
> order by a.attnum;
>
> Hope it helps.
>
> regards,
> bhuvaneswaran
>
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
> (send "unregister YourEmailAddressHere" to
> majordomo(at)postgresql(dot)org)
>
From | Date | Subject | |
---|---|---|---|
Next Message | Christoph Haller | 2003-04-10 13:21:06 | Re: Extraordinary Full Join |
Previous Message | joostje | 2003-04-10 11:21:44 | estimates for nested loop very wrong? |