PDA

View Full Version : قفل کردن یک رکورد در sql server



فرهادی
سه شنبه 11 مرداد 1384, 18:09 عصر
به نام خدا
سلام
شرح مشگل :
چند کلاینت داریم که به یک سرور وصل شده اند و همه در حال ورود data به یک جدول هستند .
می خواهم که به 2 (یا چند کاربر) بطور همزمان اجازه ندهم که روی یک رکورد مشترک قرار بگیرند.
یعنی تا وقتی که یک کاربر در حال update کردن یک رکورد هست آن رکورد برای آن کاربر lock شود و تا وقتی آن کاربر از روی آن رکورد نرفته کاربر دیگری نتواند بر روی آن رکورد قرار بگیرد.
منتظر جواب هستم
با تشکر

AminSobati
سه شنبه 11 مرداد 1384, 22:57 عصر
دوست عزیزم،
شما میبایست Transactional عمل کنین. یعنی مثلا کاربر اول این کار رو انجام میده:


BEGIN TRANSACTION
UPDATE MyTable SET SomeField='Some Value'
WHERE RecordID=1

در این حالت کاربر دیگه ای نمیتونه رکورد 1 رو ویرایش کنه تا زمانیکه کاربر اول Transaction رو به پایان ببره با یکی از دو دستور:
COMMIT TRANSACTION
یا
ROLLBACK TRANSACTION
ولی در این حالت، کاربر اول نه تنها جلوی ویرایش سایر کاربرها رو میگیره، بلکه جلوی Select اونها رو هم میگیره.
اگر مایل هستین در مورد Transaction ها و Isolation Levelها مطلب مطالعه کنین (به طور مفصل در Books Online موجوده)