wrong problem. I don't really understand the details of what the lock table dump is telling me,
It does take a bit of practice to learn how to read the information, although I suspect you're not looking for basic introductory info at this point. Still, this is a place to start: http://wiki.apache.org/db-derby/LockDebugging Another thing you might try is to run your SQL statements outside of their triggers, and study their locking behavior in isolation first. I definitely don't understand the excerpt of the lock table that you included -- is it possible to enclude the entire output? The excerpt that you showed seemed to show transaction 188504168 waiting for a shared row lock on row (2,6), but it didn't show anyone *holding* a lock on row (2,6) -- the other locks you showed were on other rows. Was transaction ...167 indeed locking every single row in the users table in exclusive mode, one at a time? Do you have such a transaction in your program? If you look in the full table, do you see an entry for transaction ...167 holding row (2,6) in exclusive mode? Perhaps the full lock table dump will give more clues. Hope this helps, bryan