From: | Rob Northcott <Rob(at)teamsystems(dot)co(dot)uk> |
---|---|
To: | 'Tony Day' <tonyd(at)panztel(dot)com> |
Cc: | "'pgsql-novice(at)postgresql(dot)org'" <pgsql-novice(at)postgresql(dot)org> |
Subject: | Re: Get details of user locking a record? |
Date: | 2010-05-13 08:46:51 |
Message-ID: | 4300547FCC2E2A4EA97985D577953D2E8E45E4ADFD@SERVER.team.local |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-novice |
Thanks Tony,
We actually managed to work something out yesterday that does what we're after.
For anybody else looking for a way to do this: Using the pgrowlocks() function, then cross-referencing those results with pg_stat_activity by pid = procpid allows us to get the user name and IP address.
For example,
select usename, client_addr from MyTable, pg_stat_activity, pgrowlocks('MyTable')
where MyKeyField = MyKeyValue and locked_row = ctid and procpid = pids[1]
Rob
From: Tony Day [mailto:tonyd(at)panztel(dot)com]
Sent: 12 May 2010 21:05
To: Rob Northcott
Cc: pgsql-novice(at)postgresql(dot)org
Subject: Re: [NOVICE] Get details of user locking a record?
Hi Rob
Have a look at http://wiki.postgresql.org/wiki/Lock_Monitoring
It might be the sort of thing that you are looking for.
Regards, Tony
On Thu, May 13, 2010 at 5:50 AM, Rob Northcott <Rob(at)teamsystems(dot)co(dot)uk<mailto:Rob(at)teamsystems(dot)co(dot)uk>> wrote:
Hello list,
I'm pretty new to SQL servers, so this may be a silly question, but here goes anyway...
When a user tries to edit a record (SELECT * FROM mytable WHERE key = 'mykey' FOR UPDATE NOWAIT) and it is locked by another user, I can trap the error and tell the user it is locked. No problems there. But is it possible to find out what other user (name or ip address?) is doing the locking? I've done lots of web searching and it seems like it's considered a bad idea to lock records in database applications - but I don't want my users to spend ages editing, say, a customer's address or notes, only to be told they can't save the changes because somebody else has edited it in the meantime.
Is there an easy way (or any way for that matter) to find out who owns the lock on a specific record or a table?
Rob Northcott
Programmer, Team Systems Ltd.
--
Sent via pgsql-novice mailing list (pgsql-novice(at)postgresql(dot)org<mailto:pgsql-novice(at)postgresql(dot)org>)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-novice
Attachment | Content-Type | Size |
---|---|---|
AVG certification.txt | text/plain | 93 bytes |
From | Date | Subject | |
---|---|---|---|
Next Message | Atif Jung | 2010-05-13 10:30:22 | Re: Interrupt |
Previous Message | Hernan Danielan | 2010-05-13 05:23:03 | LargeObject |