PDA

View Full Version : lock کردن table



minaalamshahi
سه شنبه 22 فروردین 1391, 13:21 عصر
با سلام
من لازم دارم تا چندین سطر ویرایش بشن یا اصلا نشن
اما احتیاج دیگه ای که هست اینه که اگر دو کاربر دروس یکسانی رو انتخاب کنن و این دستور رو کلیک کنند درس برای کسی درج بشه که کلیه خطوط بالا براش اجرا شده
یعنی اگر کاربری درس 1و2و3
کاربر 2 درس 2و4و5
رو بگیرن
و کاربر 1 زودتر کلید رو زد
درس 1و2و3 برای کاربر 1 درج بشه و در حین اینکار هیچ چیزی برای 2 درج نشه بعد کاربر 2 وارد میشه میبینه درس 1 قبلا اخد شده پس هیچ درسی براش درج نشه و از حلقه خارج بشه
یکی از دوستان گفت transaction خودش قفل کردن برای کاربر 1 رو انجام میده اما توصیه دیگران رو استفاده از دستوری به اسم lock هست
اگر باید دیتابیس lock بشه ممنون میشم منو راهنمایی کنید با توجه به اینکه درام از transaction هم استفاده می کنم

oliya24
دوشنبه 28 فروردین 1391, 13:06 عصر
ببینید در مورد تراکنشها :شما میتونید رکوردها رو با استفاده از همزمانی رکوردهایی رو که میخواهید قفل کنید من مقداری از راه رو رو براتون میگم مابقیش دیگه با خودت
concurrency در این مورد به صورت لاتین سرچ کنید کل مشکل شما باین مبحث حل میشه
همزمانی یا concureency حالتهایی داره که به شرح زیر میباشن
1:حالت lost update :زمانی رخ میدهد که یک تراکنش داده ای را بخواند که توسط یک تراکنش دیگر در حال بروز رسانی میباشد
2:حالت dirty read: در این حالت یک تراکنش رکوردی از اطلاعات رو میخواند که تراکنش دیگری در حال بروز رسانی ان است و هنوز commit یا rollback نشده است
3: non repeatable read: در این حالت یک تراکنش به دعات نیاز به دسترسی به منابعی دارد که در حال بروز رسانی توسط تراکنش دیگری میباشد و با هر بار خواندن اطلاعات ---- اطلاعات متفاوتی دریافت میکند
4:phantom read : این اشکال هنگامی رخ میدهد که عملیات درج - حذف توسط یک تراکنش زمانی رخ دهد که پیش از ان در کرانی که عملیات فوق انجام میشود یک تراکن عملیات خواندن اطلاعات رو انجام میدهد در این صورت در کرانی که گفته شد پس از اجرای عملیات حذف یا تغییرات اعمال شده از دید تراکنش پیشین که کران را قبلا خوانده مخفی میماند
برای جلوگیری از هر یک از این حالات دستوراتی هم هست شما خودت همونطور که گفتم یه سرچ تو سایت مایکروسافت بزن اگر هم کمکی خواستی بگو
موفق باشی