PDA

View Full Version : مشکل در تولید اتوماتیک اعداد برای یک فیلد



bahman.net
پنج شنبه 10 فروردین 1385, 01:11 صبح
با سلام و عرض خسته نباشین
من یه فیلد درsql server 2000دارم که خاصیت Identity اونو yesکردم
تا اعداد رو به طور اتوماتیک تولید کنه ولی مشکل اینجاست که وقتی آخرین رکورد از رکورد ها رو که دارای یه شماره مثلا"10است را پاک میکنم دیگه عدد 10رو دیگه ثبت نمیکنه و از 11 ادامه میده آیا راه حلی برای این مشکل هستاگه هست ممنون می شم کمکم کنین

white fox
پنج شنبه 10 فروردین 1385, 05:58 صبح
وقتی دارید از Identity استفاده میکنید...نه فکر نمیکنم...
مگه اینکه فیلدی که شما میخواید اعداد ترتیبی رو نگه داره باید دستی بنویسید..که اغلب به کمک SP این کار رو انجام میدن

M.kavyani
پنج شنبه 10 فروردین 1385, 13:31 عصر
با سلام و عرض خسته نباشین
من یه فیلد درsql server 2000دارم که خاصیت Identity اونو yesکردم
تا اعداد رو به طور اتوماتیک تولید کنه ولی مشکل اینجاست که وقتی آخرین رکورد از رکورد ها رو که دارای یه شماره مثلا"10است را پاک میکنم دیگه عدد 10رو دیگه ثبت نمیکنه و از 11 ادامه میده آیا راه حلی برای این مشکل هستاگه هست ممنون می شم کمکم کنین
با سلام
این قانون این نوع فیلد است. پس کاریش نمیشه کرد.
به گفته استاد عزیز آقای ثباتی برای تولید Rank در جدول نباید از Identity استفاده کرد. شما باید از زبان برنامه نیوسی و به صورت دستی استفاده کنید.
اگر از SQL2005 استفاده میکنید. می تونید از Reporting Service هم بهر بگیرید.
در پناه حق موفق و کامروا باشید

AminSobati
پنج شنبه 10 فروردین 1385, 15:23 عصر
آقای کاویانی عزیز به اصل مطلب اشاره کردند، من کمی توضیح میدم:
اساسا فیلد Identity برای ایجاد Sequence (یا ترتیب و توالی) نباید استفاده بشه. از اونجاییکه یک فیلد عددی (و البته یونیک) برای PK کاربرد داره، لذا Identity شما رو از تولید این اعداد بی نیاز میکنه و خودش عهده داره میشه. در غیر اینصورت شما میابیست همیشه برای تولید عدد جدید، Max بگیرید، یکی بهش اضافه کنید و Insert کنید. با توجه به همزمانیه کاربران، ممکنه دو کاربر با هم Max بگیرند و یکی اضافه کنند و عدد یکسان Insert کنند که PK قبول نخواهد کرد. ولی Identity این مشکل رو نخواهد داشت.
و اما داشتن یک فیلد مرتب یا به اصطلاح Rank، معمولا در جدول نیازی به نگهداریش نداریم و فقط موقع تولید گزارش بهش نیاز پیدا میکنیم. نحوه ایجاد فیلد Rank در حین گزارش گیری بارها در همین Forum توضیح داده شده (هم برای 2000 و هم برای 2005)
http://www.barnamenevis.org/forum/showthread.php?t=11186
http://www.barnamenevis.org/forum/showthread.php?t=17242

bahman.net
جمعه 11 فروردین 1385, 01:54 صبح
باسلام
از توجه و کمکتون ممنونم موفق باشین