ورود

View Full Version : همزمانی اجرای دستورات



HDDSoft2001
سه شنبه 29 دی 1388, 02:07 صبح
با سلام خدمت دوستان

من میخاستم بدونم وقتی اس کیو ال سرور روی یک سرور قرار داره و کلاینت ها درخواست هاشونو میفرستن به یک بانک اس کیو ال ایا در ان واحد چندین درخواست روی یک بانک قابل اجراست یا نه یکی یکی انجام میشه ولی خیلی سریع.


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

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

حالا هر کی فهمید من چی گفتم لطف کنه جواب بده.

با تشکر

بهنام بهمنی
سه شنبه 29 دی 1388, 07:59 صبح
شما بايد بعد از اينکه کاربر دکمه درج رت زد , اقدام به توليد شماره سند کنيد, در غير اينصورت همانطور که گفتيد بعضي از شماره سندها خالي رد مي شود.

توليد شماره سند و ذخيره سند بايد در داخل دستور Transaction قرار گيرد , تا بين اين دو عمل تغييري در جدول صورت نگيرد

sia_2007
سه شنبه 29 دی 1388, 09:21 صبح
شما باید بعد از دکمه درج اقدام به دادن شماره سند کنید و در صورت موفقیت اون رو به کاربر نشون بدهید.
هر چند در این صورت هم زمانی که دارید top سند ها رو میخونید از get app lock استفاده کنید