View Full Version : سوال: راهکار اسکوئل برای تغییر کورد ها در محیط های چند کاربره
samprp
سه شنبه 19 شهریور 1387, 14:43 عصر
سلام دوستان
یه پایگاه داده تحت شبکس که قراره بقیه سمت کلاینت به هش وصل شن .
یه جایی از برنامه امکان ورود مثلا یه کالاست . هنگام ایجاد کالا جستجو می کنه ببینه آیا مثلش از قبل ایجاد شده یا نه .
حال دوستان فرض کنید یه کاربر همون لحظه که ما می خوایم یه کالا رو درج کنیم یکی دیگه مثه اونو ایجاد می کنه تا درج بشه تو DB .
با توجه به کلید بودن ID اون کالا راهکار اسکوئل در این مورد چیه ؟
آیا کانفلیت می شه ، جدول رو قفل می کنه یا ...
(با توجه به اینکه امکان تستش مشکله می خواستم نظرتون رو بدونم )
با تشکر
حمیدرضاصادقیان
چهارشنبه 20 شهریور 1387, 08:34 صبح
سلام.من خودم یک کوئری نوشتم که هردفعه که کالا یک کدی رو اضافه میکنه همون لحظه در Sql جستجو میکنه ببینه ایا کد هست یا نه .اگر نبود اضافه میکنه.تاحالا هم مشکلی نداشتم.
samprp
چهارشنبه 20 شهریور 1387, 11:27 صبح
ممنون از توجهتون
یعنی امکان برخورد وجود نداره .
اگه تعداد کاربرای همزمان بیشتر بشه برخورد پیش نمی یاد.
مثلا تو اکسس فکر کنم انجین اون رکورد رو قفل می کرد تا کانفلیت نشه !!!!؟؟؟
رضا عربلو
چهارشنبه 20 شهریور 1387, 15:58 عصر
سناریو های مختلفی وجود دارد. که هر کدام باتوجه به نیازهای شما می تواند انتخاب شوند.از جمله
1 - قبل از اینکه کاربر رکورد را آپدیت کند بررسی کند که آیا رکورد در این مدت تغییراتی داشته است و یا خیر (روشی که در ADO.NET استفاده می شود).
2 - بی خیال تغیر رکورد توسط دیگران کاربر بشوید و بدن هیچگون دغدقه ای با داشتن primary key رکورد را آپدیت کنید.
3 - اگر در یک SP می خواهید یک سری اعمال بر روی چند جدول انجام دهید و نمی خواهید در این میان کسی کاری بر روی آنها انجام دهد می توانید جدول و یا رکورد مورد نظرتان را LOCK کنید.
4 - ...
samprp
چهارشنبه 20 شهریور 1387, 17:58 عصر
ممنون آقای عربلو
بییشتر توهمات بر طرف شد
بی خیال تغیر رکورد توسط دیگران کاربر بشوید و بدن هیچگون دغدقه ای با داشتن primary key رکورد را آپدیت کنید.
این یعنی اگه جدول پرایمری کی داشته باشه هنگام آپدیت اون رکورد (یا جدول) قفل می شود !!!!
اگر در یک SP می خواهید یک سری اعمال بر روی چند جدول انجام دهید و نمی خواهید در این میان کسی کاری بر روی آنها انجام دهد می توانید جدول و یا رکورد مورد نظرتان را LOCK کنید.
این روش خوبیه . اگه همینجا یه مرجعی چیزی هم معرفی کنید بی نهایت ممنون می شم .
رضا عربلو
چهارشنبه 20 شهریور 1387, 18:25 عصر
"بی خیال تغیر رکورد توسط دیگران کاربر بشوید و بدن هیچگون دغدقه ای با داشتن primary key رکورد را آپدیت کنید. " یعنی هیچ چیزی را قفل نمی کنید.
Locking in Microsoft SQL Server (http://www.mssqlcity.com/Articles/Adm/SQL70Locks.htm)
Record Locking in SQL Server (http://www.wwwcoder.com/parentid/191/tabid/68/type/art/site/6508/default.aspx)
How to Lock a Table in SQL SERVER Using VB.NET (http://www.dotnetspider.com/resources/18138-Locking-Table-SQL-SERVER-Using-VB-NET.aspx)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.