The solutions Josh and John outline seems to me to be the best choice. One word of caution though. You used the terms 'BEGIN TRANSACTION' in your post. You want to make sure you are using buffering when waiting for a client to press a button and not a transaction. Never, Never, Never allow the client to decide when a transaction gets closed. Transactions cause locks and can interfear with other users.
Chad Gronbach
Blackstone, Inc.