Re: Updatable resultset with join query.

Lists: pgsql-jdbc
From: Prasanth <dbadmin(at)nqadmin(dot)com>
To: pgsql-jdbc(at)postgresql(dot)org
Subject: Updatable resultset with join query.
Date: 2005-04-07 19:31:19
Message-ID: 42558A87.10805@nqadmin.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc

I am trying to get an updatable result set using a join query.
It does not work if I join it using where condition.
(FROM table1, table2 WHERE table1.id1 = table2.id2)

If I do it using INNER JOIN it works partially. What I mean
is I can update one table but not the other.

Example
sql = "SELECT table1.p_key, table1.name, table2.p_key, table2.f_key, table2.name
FROM table1 INNER JOIN table2 ON table1.p_key = table2.f_key;";

I will be able to update the columns in table1 but not in table2.

sql = "SELECT table1.p_key, table1.name, table2.p_key, table2.f_key, table2.name
FROM table2 INNER JOIN table1 ON table1.p_key = table2.f_key;";

In this case I can update columns in table2 but not in table 1.

So seems like the first table that comes in the FROM clause is updatable.

Is this how is should work?

Thanks,
-Prasanth.


From: Dave Cramer <pg(at)fastcrypt(dot)com>
To: dbadmin(at)nqadmin(dot)com
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: Updatable resultset with join query.
Date: 2005-04-07 19:38:49
Message-ID: 42558C49.9070407@fastcrypt.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc

Yes, not all result sets are updateable, only simple one table result
sets are supported. This is in the spec.

dave

Prasanth wrote:

>I am trying to get an updatable result set using a join query.
>It does not work if I join it using where condition.
>(FROM table1, table2 WHERE table1.id1 = table2.id2)
>
>If I do it using INNER JOIN it works partially. What I mean
>is I can update one table but not the other.
>
>Example
>sql = "SELECT table1.p_key, table1.name, table2.p_key, table2.f_key, table2.name
>FROM table1 INNER JOIN table2 ON table1.p_key = table2.f_key;";
>
>I will be able to update the columns in table1 but not in table2.
>
>sql = "SELECT table1.p_key, table1.name, table2.p_key, table2.f_key, table2.name
>FROM table2 INNER JOIN table1 ON table1.p_key = table2.f_key;";
>
>In this case I can update columns in table2 but not in table 1.
>
>So seems like the first table that comes in the FROM clause is updatable.
>
>Is this how is should work?
>
>Thanks,
>-Prasanth.
>
>
>---------------------------(end of broadcast)---------------------------
>TIP 7: don't forget to increase your free space map settings
>
>
>
>

--
Dave Cramer
http://www.postgresintl.com
519 939 0336
ICQ#14675561


From: Kris Jurka <books(at)ejurka(dot)com>
To: Prasanth <dbadmin(at)nqadmin(dot)com>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: Updatable resultset with join query.
Date: 2005-04-08 23:06:47
Message-ID: Pine.BSO.4.56.0504081804280.24516@leary.csoft.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc

On Thu, 7 Apr 2005, Prasanth wrote:

> I am trying to get an updatable result set using a join query.
> It does not work if I join it using where condition.
> (FROM table1, table2 WHERE table1.id1 = table2.id2)
>
> If I do it using INNER JOIN it works partially. What I mean
> is I can update one table but not the other.
>

It is actually a known bug that it works with the INNER JOIN. There is
code to try and determine if the query spans more than one table, but it
is very simple and only recognizes plain "," joins. Code was submitted to
improve this, but I did not take a good look at it. In any case it
probably isn't the direction you want things to go anyway.

Kris Jurka