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

نام تاپیک: جلوگیری از ویرایش یک رکورد تو سط چند تا کلاینت

  1. #1
    کاربر دائمی آواتار DoDoklak
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    شهر 3500 ساله
    پست
    320

    جلوگیری از ویرایش یک رکورد تو سط چند تا کلاینت

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

    ولی مشکل تو ویرایش یک رکورد مشترک هستش
    فرض کنید فاکتور شماره 1 با 10 رکورد وجود داره ویک کلاینت میخوان اونو ویرایش کنه قبل ذخیره تغییرات
    کلاینت اطلاعات فاکتور رو میریزن تو یک Dataset برنامه ش و تغییرات رو تو DataSet اعمال میکنه

    در حین اینکه کلاینت مورد نظر در حال ویرایش است یک کلاینت دیگه باز میخواد اونو ویرایش کنه
    اگر در یک زمان هردوشون بخوان اطلاعاتو ویرایش کنن مشکلات محاسباتی و انباری به وجود میاد

    چطور میشه جلوی ویرایش کلاینت دوم رو گرفت ؟

    البته میشه با گذاشتن یک جدول کنترلی در بانک این رکوردها رو موقتا قفل کرد فرضا وقتی یک کلاینت میخواد رکوردی رو ویرایش کنه ابتدا به جدول کنترلی نگاه میکنه اگر قفل نبود بعد ویرایش کنه و اگر قفل بود پیغامی از برنامه دریافت کنه مبنی بر اینکه رکورد مورد نظر در حال به روز رسانی است و بعدا امتحان کنه

    حالا اگه کسی فکر بهتری داره لطفا بگه

    با تشـــــــــــــــــــــــ ـــــــــــــــتکر

  2. #2
    کاربر دائمی آواتار f.nabavi
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    طهرون جدید
    پست
    255

    نقل قول: جلوگیری از ویرایش یک رکورد تو سط چند تا کلاینت

    سلام. همون طور که گفتی یه راه حل اینه که جدول در هنگام ویرایش قفل بشه ولی اینم مشکلاتی به وجود میاره مثلا کاربر یه مدت معطل میشه تا ویرایش کاربر اول تموم بشه
    یه راه دیگه اینه که هر دو کاربر بتونن شروع به ویرایش کنن ولی نه از روی جدول اصلی بلکه بر روی یک view.
    یک view از جدول اصلی میگیرن و اون رو ویرایش میکنن. فرض کنیم view کاربر دوم به اسم view2 باشه و این view به وسیله select2 ساخته شده باشه. کاربر اول تغییرات خودش رو ثبت کنه. حالا وقتی کاربر دوم میخواد تغییرات خودش رو ثبت کنه،برنامه یه بار دیگه درخواستselect 2 رو اجرا میکنه. اگر با اونی که کاربر روش کار کرده تفاوت داشت بهش اطلاع میده که جدول از آخرین باری که شما دید تغییر کرده آیا میخواید جدول جدید رو ببینید؟

  3. #3
    کاربر دائمی آواتار DoDoklak
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    شهر 3500 ساله
    پست
    320

    نقل قول: جلوگیری از ویرایش یک رکورد تو سط چند تا کلاینت

    البته منظورم از قفل ، قفل اون رکورد مورد نظر بو نه کل جدول یعنی میشه چند کاربر روی یک جدول ویرایش کنن به شرطی که رکوردهاشون یکی نباشه

    ولی در کل روش شما هم جالبه.ممنون

    ولی آیا اجرای دوبار Select جهت بررسی درتراکنش بالای اطلاعات و کلاینتهای زیاد باعث کند شدن سرعت برنامه و ترافیک شبکه نمیشه

  4. #4
    کاربر دائمی آواتار f.nabavi
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    طهرون جدید
    پست
    255

    نقل قول: جلوگیری از ویرایش یک رکورد تو سط چند تا کلاینت

    تو برنامه های کوچیک که نه. ولی برای یه دیتابیس با تراکنش بالا چرا. تو اون حالت ها بهتر از روش قفل کردن و مقایسه به صورت ترکیبی استفاده بشه. اینکه یه کاربر برای ویرایش رکوردها منتظر باز شدن جدول بمونه به همون اندازه بده که طول کشیدن پروسه ویرایش. البته من هیچ وقت این روش ها رو عملی در تراکنش های با حجم بالا استفاده نکردم. نمیدونم نتیجه اش چی میشه.

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

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