با درود
ما یه جدول داریم که حاوی یک فیلد nvarcharهست که هر دستور افزودن رکورد که به پایگاه داده میره ابتدا آخرین مقداررو از فیلد مورد نظر رو میگیره بعد با یه پردازش در c# مقدار بعدی رو میسازه تا در جدول ذخیره بشه اما مشکل اینجاست
فرض کنید در یک لحظه خاص همزمان سه درخواست به سمت سرور برای گرفتن آخرین مقدار از این فیلد میره هر سه درخواست یک مقدار رو دریافت میکنند و بعد از پردازش هر س درخواست همان مقدار رو میخان تو جدول ذخیره کنند یکی از این سه درخواست انجام خواهد شد ولی دو درخواست دیگر شکست خواهند خورد راهکار دوستان برای اینکار چیه اینو هم بگم نمیتونیم اول فقط اون فیلد خاص رو تو جدول هinsertکنیم چون جدول چندین فیلد با مقادیر الزامی غیر نال داره
با تشکر
ببخشید فکر میکنم یه اصلاح کنم سوالمو اینه که در این جدول امکان درج رکوردهای دیگری هست که امکان داره مقدار فیلد مورد نظر براشون یکسان باشه و فقط در یک شرایط خاص وقتی که رکورد اولین بار ثبت میشه باید یک شماره ی مجزا بهش اختصاص بدیم مثلا اگه آخرین رکود جدول حاوی آی دی 520 باشه هیچ دلیلی وجود نداره که ما آخرین مقدار فیلد مون هم همون رکورد باشه ممکنه آخرین مقدار رکورد که درج شده و ما نیاز داریم تا از روی اون رکورد شماره جدید رو بسازیم رکورد شماره 428 باشه پس نمیتونیم به آخرین رکورد درج شده اعتماد کنیم ضمن اینکه ساخت کد جدید به یک واکشی اطلاعات ورفت و برگشت از sql به سرور تقاضا کننده نیاز هست که در همین وسط ممکنه رکورد جدیدی درج بشه واینجاست که خطا اتفاق میفته فرض کنید فرمت رکورد به این صورته a1396/b271-135حال مقدار بعدی که در رکورد درج خواهد شد a1396/b271-136oخواهد شد نکته مهم اینه که آخرین رکورد جدول حتما حاوی آخرین مقدار مورد نیاز ما برای ساختن رکورد جدید نیست
لینک هایی که قرار دادم را بررسی کنید مشکلتان حل می شود.
بهتره در سرور درخواست ها را در یک صف قرار دهید و تک تک پردازش کنید
میتونید از کالکشن queue استفاده کنید
ولی rowversion زمانی بدرد میخوره که من بخام به آخرین رکورد دسترسی داشته باشم ولی ممکنه اون رکوردی که من میخام حتما آخرین رکورد نباشه که اکثر اوقات اینطوریه
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)