I am wondering how to rewrite the following SQL Server 2005/2008 script for SQL Server 2000 which didn’t have OUTPUT yet.
Basically, I would like to update rows and return the updated rows without creating deadlocks.
Thanks in advance!
UPDATE TABLE
SET Locked = 1
OUTPUT INSERTED.*
WHERE Locked = 0
You can’t in SQL Server 2000 cleanly
What you can do is use a transaction and some lock hints to prevent a race condition. Your main problem is 2 processes accessing the same row(s), not a deadlock. See SQL Server Process Queue Race Condition for more, please.
I haven’t tried this, but you could also try a SELECT in an UPDATE trigger from INSERTED.