What version of PostgreSQL are you running? The following assumes 8.1.8 or later (it may apply to earlier versions too, I don't know).
I presume that you mean that phpPgAdmin timed out -- the PostgreSQL backend will take as long as it takes to complete a query/update. In that case, it's possible that the original session is still alive and the UPDATE query is still running. I suggest running the following query (taken from [chapter 24 of the PostgreSQL docs](
[To see links please register here]
)) on the machine that hosts the PostgreSQL server process, to see whether the session is still alive:
ps auxwww|grep ^postgres
Several rows should appear: 1 for the `postmaster` master process, and 1 each for "writer", "stats buffer", and "stats collector" processes. Any remaining lines are for processes serving DB connections. These lines will contain the username and database name.
Hopefully, from that you can see whether the session you performed the original UPDATE in is still hanging around. Although in theory you could find more detailed info by `SELECT`ing from the system view `pg_stat_activity`, by default PostgreSQL is not set up to populate the most useful fields (such as `current_query` and `query_start`). See chapter 24 for how to enable this in the future.
If you see the session is still there, kill it. You will need to be logged in as the user running the process (usually `postgres`) or root to do so -- if you don't run the server yourself, get your DBA to do this for you.
One more thing: for updating rows in a table, PostgreSQL avoids using locks. Instead, it allows every writing transaction to create a new "version" of the DB, which becomes the "current version" when the transaction is committed, provided it doesn't conflict with updates made in the meantime by other transactions. So I suspect the "hanging" you're seeing is caused by something else -- though what, I'm not sure. (Have you checked the obvious things, like whether the disk partition containing the DB is full?)