PDA

View Full Version : چگونه می توان در sqlرکوردی را lock نمود



rezaei
چهارشنبه 30 فروردین 1385, 07:58 صبح
من در sql تازه کار هستم
میخواهم بدانم چنانچه رکوردی جهت اصلاح انتخاب کنیم وبخواهیم تا اتمام این عمل فرد دیگری نتواند این رکورد را جهت اصلاح بردارد چه باید کرد

Kamyar.Kimiyabeigi
چهارشنبه 30 فروردین 1385, 09:59 صبح
شما باید در TSql خود از Option های Transaction استفاده کنین
اگر اشتباه نکرده باشم مربوط میشه به SET TRANSACTION ISOLATION LEVEL

mzjahromi
چهارشنبه 30 فروردین 1385, 12:23 عصر
Begin Transaction
Select FieldName From TableName With (TabLockX)
Commit transaction

البته بجای TabLockX می تونی از قفل مورد نظرت استفاده کنی

AminSobati
پنج شنبه 31 فروردین 1385, 23:56 عصر
به خاطر داشته باشید هیچ وقت زمانی که یک کاربر فرم رو باز میکنه، رکورد رو Lock نکنید. چون ممکنه کاربر فرم رو رها کنه و مدت زیادی رکورد رو Lock نگه داره. در عوض از فیلد Timestamp استفاده کنید. وقتی رکورد رو Select میکنید، Timestamp رو هم بخونید. موقع Update کردن، اگر مقدار Timestamp موجود با چیزی که خوندین یکی بود، پس کسی در این مدت رکورد رو تغییر نداده و شما میتونین با خیال راحت Update کنید. در غیر اینصورت به کاربر اطلاع بدین که کسی رکورد رو ویرایش کرده و میتونین مقادیر فعلی رو بهش نمایش بدین تا تصمیم بگیره آیا Update خودش روی مقادیر فعلی Over write بشه یا هر نوع تصمیم گیریه دیگری...

Arminizer_88
دوشنبه 15 خرداد 1385, 11:15 صبح
به خاطر داشته باشید هیچ وقت زمانی که یک کاربر فرم رو باز میکنه، رکورد رو Lock نکنید. چون ممکنه کاربر فرم رو رها کنه و مدت زیادی رکورد رو Lock نگه داره. در عوض از فیلد Timestamp استفاده کنید. وقتی رکورد رو Select میکنید، Timestamp رو هم بخونید. موقع Update کردن، اگر مقدار Timestamp موجود با چیزی که خوندین یکی بود، پس کسی در این مدت رکورد رو تغییر نداده و شما میتونین با خیال راحت Update کنید. در غیر اینصورت به کاربر اطلاع بدین که کسی رکورد رو ویرایش کرده و میتونین مقادیر فعلی رو بهش نمایش بدین تا تصمیم بگیره آیا Update خودش روی مقادیر فعلی Over write بشه یا هر نوع تصمیم گیریه دیگری...

جالبه.
من این راه حل رو نمیدونستم، مرسی.