View Full Version : مشکل در همزمان شدن عمل ثبت دو کاربر
Maryam_y_m
چهارشنبه 24 اسفند 1384, 09:12 صبح
در عمل ثبت سیستم، روند ثبت به این صورت می باشد:
1) ثبت یک رکورد در جدول A
2) پیدا کردن ID رکورد ثبت شده در جدول A توسط MAX ID
3) ثبت ID در جدول B
در این روند، اگر دو کاربر به طور همزمان کلید ثبت را بزنند، مورد 1 درست انجام شده و 2 رکورد به جدول A اضافه میشود ولی بند 2 برای هردوی کاربران یک ID برمیگرداند که این اشتباه میباشد. چگونه میتوانم این مشکل را رفع کنم؟
با تشکر
h_baqery
چهارشنبه 24 اسفند 1384, 09:49 صبح
این دستورات داخل کد برنامه اند یا داخل SQLServer چون اگر داخل یک بلاک دستور در SQLServer باشند مشکلی نیست .
rabinhood_tehran
چهارشنبه 24 اسفند 1384, 10:30 صبح
شما نباید از MaxID استفاده کنید. باید از @@Identity استفاده کنید.
( البته اگر ID بصورت AutoNumber است )
@ID = @@Identity
AminSobati
چهارشنبه 24 اسفند 1384, 11:16 صبح
این دستورات داخل کد برنامه اند یا داخل SQLServer چون اگر داخل یک بلاک دستور در SQLServer باشند مشکلی نیست .
دوست عزیزم،
اگر این دستورات داخل یک SP روی SQL Server باشند باز هم اجرا شدن همزمان این SP توسط دو نفر مشکل ساز میتونه باشه.
AminSobati
چهارشنبه 24 اسفند 1384, 11:16 صبح
در عمل ثبت سیستم، روند ثبت به این صورت می باشد:
1) ثبت یک رکورد در جدول A
2) پیدا کردن ID رکورد ثبت شده در جدول A توسط MAX ID
3) ثبت ID در جدول B
در این روند، اگر دو کاربر به طور همزمان کلید ثبت را بزنند، مورد 1 درست انجام شده و 2 رکورد به جدول A اضافه میشود ولی بند 2 برای هردوی کاربران یک ID برمیگرداند که این اشتباه میباشد. چگونه میتوانم این مشکل را رفع کنم؟
با تشکر
سلام،
ID از طریق Identity بدست میاد یا توسط مکانیزم خاصی توسط شما تولید میشه؟
Maryam80
چهارشنبه 24 اسفند 1384, 11:30 صبح
با تشکر از توجه دوستان
مقدار آن Autonumber است و هر سه فاز ذکر شده در برنامه اجرا میشود نه SQL
AminSobati
چهارشنبه 24 اسفند 1384, 11:41 صبح
با توجه به Auto Number بودن، همونطور که ذکر شد توسط دوستان، باید از IDENTITY@@ استفاده کنین. ولی چرا کد رو داخل SP قرار نمیدین که راحت مقدار ID رو توسط Output Parameter برگردونین؟
Maryam80
چهارشنبه 24 اسفند 1384, 11:46 صبح
دوست عزیزم،
اگر این دستورات داخل یک SP روی SQL Server باشند باز هم اجرا شدن همزمان این SP توسط دو نفر مشکل ساز میتونه باشه.
__________________
شما در بالا اشار فرمودید به این که استفاده از SP ایجاد مشکل می کند و الان فرمودید که از SP استفاده کنیم؟؟؟
AminSobati
چهارشنبه 24 اسفند 1384, 12:08 عصر
شما در بالا اشار فرمودید به این که استفاده از SP ایجاد مشکل می کند و الان فرمودید که از SP استفاده کنیم؟؟؟
من عرض نکردم استفاده از SP این مشکل رو داره. در حالتیکه ID به صورت دستی تولید میشه، چه ارسال دستورات از طریق برنامه و چه استفاده از SP، مشکل همزمانی وجود خواهد داشت.
ولی زمانیکه Auto Number استفاده میشه، مشکل همزمانی وجود نخواهد داشت، چه از طریق برنامه چه از طریق SP. اما در این حالت توصیه من برای استفاده از SP، به خاطر راحت تر بودن کار شماست!
Maryam80
چهارشنبه 24 اسفند 1384, 12:10 عصر
با تشکر از راهنمایی شما
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.