MS SQL2000 supports row locking by default, but this 'can be upgraded to page locking' based on some mysterious algorithm. Guess what's happening?
Thread 1 updates message number 88589 in a transaction Thread 2 updates message number 88595 in a transaction
both at the same second. *boom* 'Transaction (Process ID 58) was deadlocked on lock resources with another process and has been chosen as the deadlock victim'. ( more annoyance at fecking ADO and SQL )