Re: Update ResultSet - Mailing list pgsql-jdbc
From | Christian Rengstl |
---|---|
Subject | Re: Update ResultSet |
Date | |
Msg-id | 470CE8C9.90AD.0080.0@klinik.uni-regensburg.de Whole thread Raw |
In response to | Re: Update ResultSet ("Heikki Linnakangas" <heikki@enterprisedb.com>) |
Responses |
Re: Update ResultSet
("Heikki Linnakangas" <heikki@enterprisedb.com>)
Re: Update ResultSet (tivvpgsqljdbc@gtech-ua.com) |
List | pgsql-jdbc |
And I suppose there is no reasonable workaround, is there? Christian Rengstl M.A. Klinik und Poliklinik für Innere Medizin II Kardiologie - Forschung Universitätsklinikum Regensburg B3 1.388 Franz-Josef-Strauss-Allee 11 93053 Regensburg Tel.: +49-941-944-7230 >>> On Wed, Oct 10, 2007 at 2:53 PM, in message <470CCB67.80106@enterprisedb.com>, "Heikki Linnakangas" <heikki@enterprisedb.com> wrote: > Only simple result sets coming from a single table, with no joins, are > updateable. Granted, the error message is misleading. The driver has to > parse the query, to extract the name of the table to update or throw an > error if there's more than one table involved. In this case, it doesn't > understand the INNER JOIN, and therefore you get the misleading error > message instead of this: "ResultSet is not updateable. The query that > generated this result set must select only one table, and must select > all primary keys from that table. See the JDBC 2.1 API Specification, > section 5.6 for more details." > > Christian Rengstl wrote: >> Hi everyone, >> >> I have a query including an inner join, which I execute to obtain a >> ResultSet, but when I execute the following piece of code I get an error >> message saying that it could not update the table because it could not >> find the primary key for a table. >> rs.first(); >> rs.updateString("gene", "TestGen"); >> rs.updateRow(); >> >> Here is my query: >> SELECT gene_entropy.gene, gene_entropy.entropy, gene_entropy.iteration, >> snp_entropy.snp_id >> FROM clustering.gene_entropy INNER JOIN clustering.snp_entropy >> USING(gene) limit 5; >> >> And here is the stacktrace: >> org.postgresql.util.PSQLException: Für die Tebelle >> (clustering.gene_entropy konnte kein Primärschlüssel gefunden werden. >> at >> > org.postgresql.jdbc2.AbstractJdbc2ResultSet.isUpdateable(AbstractJdbc2ResultS > et.java:1547) >> at >> > org.postgresql.jdbc2.AbstractJdbc2ResultSet.checkUpdateable(AbstractJdbc2Resu > ltSet.java:2550) >> at >> > org.postgresql.jdbc2.AbstractJdbc2ResultSet.updateValue(AbstractJdbc2ResultSe > t.java:2796) >> at >> > org.postgresql.jdbc2.AbstractJdbc2ResultSet.updateString(AbstractJdbc2ResultS > et.java:1309) >> at >> > org.postgresql.jdbc2.AbstractJdbc2ResultSet.updateString(AbstractJdbc2ResultS > et.java:1394) >> at >> > myapp.ui.event.DBTableFrameListener.actionPerformed(DBTableFrameListener.java > :406) >> at >> javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) >> at >> javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) >> at >> > javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:38 > 7) >> at >> javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) >> at >> > javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener. > java:236) >> at >> java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272) >> at java.awt.Component.processMouseEvent(Component.java:6038) >> at >> javax.swing.JComponent.processMouseEvent(JComponent.java:3260) >> at java.awt.Component.processEvent(Component.java:5803) >> at java.awt.Container.processEvent(Container.java:2058) >> at java.awt.Component.dispatchEventImpl(Component.java:4410) >> at java.awt.Container.dispatchEventImpl(Container.java:2116) >> at java.awt.Component.dispatchEvent(Component.java:4240) >> at >> java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322) >> at >> java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986) >> at >> java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916) >> at java.awt.Container.dispatchEventImpl(Container.java:2102) >> at java.awt.Window.dispatchEventImpl(Window.java:2429) >> at java.awt.Component.dispatchEvent(Component.java:4240) >> at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) >> at >> > java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java: > 273) >> at >> > java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183 > ) >> at >> > java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java: > 173) >> at >> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168) >> at >> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160) >> at >> java.awt.EventDispatchThread.run(EventDispatchThread.java:121) >> >> I am more than happy and thankful for any advice! > > > -- > Heikki Linnakangas > EnterpriseDB http://www.enterprisedb.com > > ---------------------------(end of broadcast)--------------------------- > TIP 9: In versions below 8.0, the planner will ignore your desire to > choose an index scan if your joining column's datatypes do not > match
pgsql-jdbc by date: