I know that database transactions are used to ensure all the statements in the transaction will be executed or none of them will.
But what about locking and thread safety, for example if I have an sproc which affects multiple tables and I use a transaction in that sproc, that sproc is called from different clients at the same time, will the transactions work in parallel or will they be queued? In other words, does using a transaction guarantee that it will 'lock' all other clients and cause them to wait until the transaction finishes?
Also are there any differences between database transactions in SQL Server and MySQL? I mean the way they work.