Re: PQftable insufficient for primary key determination - Mailing list pgsql-general

From Tom Lane
Subject Re: PQftable insufficient for primary key determination
Date
Msg-id 20276.1089986098@sss.pgh.pa.us
Whole thread Raw
In response to Re: PQftable insufficient for primary key determination  (mmc@maruska.dyndns.org (Michal Maruška))
Responses Re: PQftable insufficient for primary key determination
Re: PQftable insufficient for primary key determination
List pgsql-general
mmc@maruska.dyndns.org (Michal =?iso-8859-2?q?Maru=B9ka?=) writes:
> Tom Lane <tgl@sss.pgh.pa.us> writes:
>> The problem is you haven't said what it is you want to distinguish.

> SELECT * from A, A ....

> gives a result table like:

> p | data | p |data |....
> --------------------
> 1 |  xxx | 2 | yyy | ...


> Now you edit the value  'yyy'  and want to commit this change to the DB:

> update A set data = 'zzz' where  p = primary-key-value;

> How to determine what to use for 'primary-key-value'? The value from the 1st
> column (PQftable gives A) or from the 3rd column (PQftable gives A again)?

I don't think this is a well-defined problem.  What does the user think
he's doing when he edits yyy of the join output?  There may be multiple
copies of that value in the output table, if the row that it came from
joined to multiple rows in the other tables.  In that case it would be
impossible to alter a single field value without changing other rows of
the displayed result.  So at least in the general case, I don't think
it makes sense to allow editing of fields of join results.

If you have knowledge about the form of the query that's sufficient to
guarantee that this problem won't occur, then I'd suggest taking another
look at that knowledge and seeing if it doesn't offer a solution.  But
in the perfectly general form that you've stated the issue, I don't see
a solution.

            regards, tom lane

pgsql-general by date:

Previous
From: "David Parker"
Date:
Subject: Re: moving an installation
Next
From: Bruce Momjian
Date:
Subject: Re: moving an installation