نمایش نتایج 1 تا 9 از 9

نام تاپیک: جلوگیری از خواندن یک رکورد توسط دو کاربر به صورت همزمان

  1. #1
    کاربر دائمی آواتار moferferi
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    اصفهان
    سن
    35
    پست
    786

    جلوگیری از خواندن یک رکورد توسط دو کاربر به صورت همزمان

    سلام.
    ایا میشه به وسیله تراکنش ها کاری کرد که اگه اگه کاربر یه رکوردی را select کرد (حالا به منظور edit یا delete ویا هر کار دیگه)کاربران دیکه نتونن اون رکورد را select کنن.

  2. #2
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    اردیبهشت 1386
    محل زندگی
    کاشان
    پست
    580

    نقل قول: جلوگیری از خواندن یک رکورد توسط دو کاربر به صورت همزمان

    البته من منظور شما رو درست متوجه نشدم ولی فکر کنم با یه متغیر bool بتونی یه کارایی بکنی . می تونی این متغیر رو تو دیتابیس بسازی بعد هر بار قبل از دسترسی به یه رکورد اول چک کنی اونو اگه آزاد بود قفل کنی و بخونی .

  3. #3
    کاربر دائمی آواتار moferferi
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    اصفهان
    سن
    35
    پست
    786

    نقل قول: جلوگیری از خواندن یک رکورد توسط دو کاربر به صورت همزمان

    سلام.
    تقریبا یه همچین چیزی میخوام.
    فرض کنید یه فروشگاه انلاین درست کردید.موجودی کالای ایکس مثلا 1 عدد است .کاربر اول میاد و میبینه که یکی موجوده کاربر دوم هم وارد میشه و مببینه یکی موجوده .حالا اگه کاربر اول خرید کنه مقدار صفر میشه و وقتی کاربر دوم روی خرید کلیک میکنه با خطا مواجه میشه.

  4. #4
    کاربر دائمی آواتار esmaeily-hosein
    تاریخ عضویت
    مهر 1385
    محل زندگی
    شهر دودها
    پست
    227

    نقل قول: جلوگیری از خواندن یک رکورد توسط دو کاربر به صورت همزمان

    مربوط به مبحثی به نام concurrency نه تراکنش ،
    تو سایت search کن قبل دربارش بحث شده

  5. #5
    کاربر دائمی آواتار moferferi
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    اصفهان
    سن
    35
    پست
    786

    نقل قول: جلوگیری از خواندن یک رکورد توسط دو کاربر به صورت همزمان

    بهترين روش چيه؟
    ايا اين كه ركورد را قفل كنيم يا اينكه از تريگر ها (كه فعلا بلد نيستم باهاش كار كنم) استفاده كنيم

    البته من يه نظري دارم .ميشه بگيد كه اين تز درست هست يا نه؟
    من در قشمت شرط متد ويرايش خودم اون فيلد هايي كه ممكنه كاربران تغيير بدن را ميزارم و قبل از زدن دكمه ويرايش دوباره اون ركورد را انتخاب ميكنم اگه اون فيلد مورد نظر كه ميخواهيم تغيير بديم مقدارش با مقدار قبلي فرق ميكرد به كاربر يه پيغام بده كه ايا باز هم قصد تغيير را داريد يا نه و يا اصلا جلوگيري از انجام اين كار بكنيم.
    آخرین ویرایش به وسیله moferferi : یک شنبه 21 تیر 1388 در 20:25 عصر

  6. #6
    کاربر دائمی آواتار asd_moghadas
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    اصفهان
    پست
    143

    نقل قول: جلوگیری از خواندن یک رکورد توسط دو کاربر به صورت همزمان

    سلام
    درقالب کد کسی میتونه کمک کنه دراین زمینه تئوریک زیاد بحث شده

  7. #7
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: جلوگیری از خواندن یک رکورد توسط دو کاربر به صورت همزمان

    سلام
    ولی این سئوال وزن SQLServer دارد ولی با این اوصاف میتوانید رکوردهای مورد نظر را برای اعمال تغییرات دیگران قفل کنید:

    Set Tran Isolation Level SerializableBegin TranSelect * From Users With (RowLock) Where UserID=...]

  8. #8
    کاربر دائمی آواتار asd_moghadas
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    اصفهان
    پست
    143

    نقل قول: جلوگیری از خواندن یک رکورد توسط دو کاربر به صورت همزمان

    بازهم سلام
    من از اس کیو ال 2005 استفاده میکنم از اینکه راهنمایی کردید ممنون حالا اگه ممکنه کمی بیشتر توضیح بدهید که من مبتدی هم متوجه بشم حالا سوالی که برایم پیش امده اینه که این کد را قبل از دستور اپدیت باید بنویسم ؟وچطور استفاده کنم

  9. #9
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: جلوگیری از خواندن یک رکورد توسط دو کاربر به صورت همزمان

    سلام
    شما میتوانید با این روش با یک Select مشروط رکوردهای مورد نظر را قفل کنید و بعد از این دستورات شما دستور Update خود را بنویسید و Connection را که ببندید اتوماتیک قفل رکوردها آزاد میشود.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •