PDA

View Full Version : سوال در مورد ورود اطلاعات در شبکه



payam_skandari
شنبه 27 بهمن 1386, 17:12 عصر
سلام. ممنون از راهنمایی شما دوستان.
در حال نوشتن ئک برنامه هستم که روی شبکه با حدود 50 کاربر قراره کار کنه.
سوال :یک تیبل هست که فیلد اول ان به نام کد است.من باید چه اس پی بنویسم که مطمئن باشم هیچ وقت امکان ورود دو رکورد با کد تکراری وجود ندارد.اگر در sp کد را با دستور max+1 وارد کنم این احتمال از بین میرود؟ ایا امکان اجرای یک اسپی توسط دو کاربر در ان واحد وجود ندارد؟ چون اگر این اتفاق بیافتد دو رکورد با یک کد وارد خواهد شد.

reza_rad
شنبه 27 بهمن 1386, 17:20 عصر
دوست عزیز اگر کد توسط کاربر وارد میشه ،فیلد کد تون رو unique تعریف کنید.
اما اونطوری که من از توضیح شما متوجه شدم شما می خواهید کدتون خودش تولید بشه. برای اینکار ستون کدتون رو Identity تعریف کنید در اینصورت خودش کدهای Unique تولید می کنه.

payam_skandari
شنبه 27 بهمن 1386, 18:33 عصر
ممنون از پاسختون.ولی ورود اطلاعات سند است که یک سند شامل چند رکورد است این چند رکورد با هم یک شماره کد دارند.identity که شما فرمودین میتونه واسه هر رکورد تک تک صادق باشه.

SYNDROME
شنبه 27 بهمن 1386, 21:24 عصر
شما می توانید یک فیلد شماره سند و یک فیلد برای شماره ردیف در نظر بگیرید و هر دو را کلید در نظر بگیرید.
فکر کنم کارتان اینجوری درست شود.
موفق باشید

AminSobati
شنبه 27 بهمن 1386, 23:56 عصر
میتونین آخرین عدد تولید شده رو در یک جدول کمکی نگه داری کنین. همیشه موقع Insert، اون جدول رو بخونین و یکی به عددش اضافه کنین. برای اینکه دو کاربر همزمان این جدول رو نخونن، میبایست از Hintهایی مثل xlock داخل Transaction استفاده کنین

payam_skandari
پنج شنبه 02 اسفند 1386, 17:52 عصر
میشه لطف کنید دستورش رو هم اینجا بگذارید؟ ممنون

komail_sh
پنج شنبه 02 اسفند 1386, 18:03 عصر
سلام دوست عزیز
به نظر من شما اگر فیلد کد رو پریمری تعریف کنی امکان ورود دو کد مساوی از بین میره و برای اینکه نرم افزار موقع اینسرت کردن ارور نده اونو توی try بزاری و به محض گرفتن ارور کدو بعلاوه یک کنی

payam_skandari
چهارشنبه 08 اسفند 1386, 16:33 عصر
موقع جواب دادن دقت کن دوست عزیز !چند پست قبلی رو بخون تا متوجه شی.

payam_skandari
چهارشنبه 14 فروردین 1387, 09:21 صبح
اگه میشه لطفا نحوه xlock , رو بنویسید ممنون میشم.