From: | Achilleus Mantzios <achill(at)matrix(dot)gatewaynet(dot)com> |
---|---|
To: | David Klugmann <dklugmann(at)hotmail(dot)com> |
Cc: | pgsql-sql(at)postgresql(dot)org |
Subject: | Re: View unique rowid |
Date: | 2005-06-01 15:21:53 |
Message-ID: | Pine.LNX.4.44.0506011805190.16893-100000@matrix.gatewaynet.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
O David Klugmann έγραψε στις Jun 1, 2005 :
>
> Hi
> Is it possible to refer to a unique row identifier on a view ?
>
> I have the following view but in a subsequent select I need to refer to
> each row's unique identifier and I know oid's are not valid for a view.
Provided your ids are 4 bytes long, you could try to build an artificial
id as
>
> create view persontransit
> as
> select personid, planet, name as aspectname, position as planetposition,
SELECT personid::int8 as viewid,....
> position+angle as transitposition
> from personplanet, aspect
> union
> select personid, planet, name as aspectname, position as planetposition,
SELECT X'1'::int8<<32 | personid::int8 as viewid...
> position-angle as transitposition
> from personplanet, aspect
> where name != 'OPPOSITION';
>
> Many thanks
>
> David
>
that way the viewid is unique, + you know which part of the view
it represents by masking on the 33th bit (4294967296),
while you can get the actual personid by masking with
X'FFFFFFFF' (4294967295)
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 9: the planner will ignore your desire to choose an index scan if your
> joining column's datatypes do not match
>
--
-Achilleus
From | Date | Subject | |
---|---|---|---|
Next Message | Alain Reymond | 2005-06-01 16:00:49 | How do write a query... |
Previous Message | David Klugmann | 2005-06-01 15:17:41 | Re: View unique rowid |