View Full Version : بدست آوردن شماره ای که سطر جدید تولید می کند ؟
M * M * A
جمعه 19 بهمن 1386, 19:10 عصر
با سلام
من یک جدول دارم که یک فیلد آن خودکار شماره میدهد.من چگونه می توانم بفهمم که شماره ی بعدی آن چند است ؟
حمیدرضاصادقیان
جمعه 19 بهمن 1386, 19:21 عصر
شما میتوانید با کد زیر اخرین شماره رو بدست بیارین.در ضمن بستگی داره به خود فیلد شما . که مقداری که تولید میکنه چند تا چندتا جلو میره. با توجه به اون میتوانید مقدار بعد از اون رو بدست بیارید.
select max(code) as Maxcode from table1
با این کد اخرین مقدارش بدست میاد . با توجه به مقدار identity شما میتوانید اون عدد رو با این جمع کنید تا مقدار بعد از این رو بدست بیارید.
موفق باشید.
SYNDROME
جمعه 19 بهمن 1386, 20:52 عصر
اگر خودتان به صورت دستی کنترل کنید دقیقاً می توانید مقدار بعدی را به دست بیاورید.مثلا با همان تابع Max که حمید رضا گفت.
شما میتوانید با کد زیر اخرین شماره رو بدست بیارین.در ضمن بستگی داره به خود فیلد شما . که مقداری که تولید میکنه چند تا چندتا جلو میره. با توجه به اون میتوانید مقدار بعد از اون رو بدست بیارید.
select max(code) as Maxcode from table1
با این کد اخرین مقدارش بدست میاد . با توجه به مقدار identity شما میتوانید اون عدد رو با این جمع کنید تا مقدار بعد از این رو بدست بیارید.
موفق باشید.
ولی حمید جان اگر رکورد آخر پاک شود رکورد بعدی که ایجاد می شود را نمی توان حدس زد چون یک جای خالی می افتد.
موفق باشید
حمیدرضاصادقیان
جمعه 19 بهمن 1386, 21:07 عصر
اگر خودتان به صورت دستی کنترل کنید دقیقاً می توانید مقدار بعدی را به دست بیاورید.مثلا با همان تابع Max که حمید رضا گفت.
ولی حمید جان اگر رکورد آخر پاک شود رکورد بعدی که ایجاد می شود را نمی توان حدس زد چون یک جای خالی می افتد.
موفق باشید
ممنون.درسته.من به این نکته توجه نداشتم.
raravaice
جمعه 19 بهمن 1386, 21:11 عصر
100% معقول
http://barnamenevis.org/forum/showthread.php?t=93151
Aidin
جمعه 19 بهمن 1386, 21:21 عصر
نیازی به این کار نیست
بعد از دستور INSERT این تابع رو فراخوانی کن
SELECT SCOPE_IDENTITY()
SYNDROME
شنبه 20 بهمن 1386, 05:59 صبح
نیازی به این کار نیست
بعد از دستور INSERT این تابع رو فراخوانی کن
SELECT SCOPE_IDENTITY()
اگر بخواهیم بعد از دستور Insert مقدار فوق را به دست بیاوریم که با تابعی که حمید رضا نوشته هم به دست می آید.
دوستمان می خواهد قبل از دستور Insert مقدار را بداند.
موفق باشید
Elham_gh
یک شنبه 21 بهمن 1386, 15:48 عصر
اینکار امکان پذیر نیست!SQL Server با امکان IDENTITY تنها Unique بودن فیلد شما رو تضمین می کند، نه توالی بدون gap رو.
Aidin
یک شنبه 21 بهمن 1386, 23:43 عصر
فقط غیر ممکن ، غیر ممکنه ;)
یک Transaction بسازید و در اون INSERT کنید و با SELECT SCOPE_IDENTITY مقداز ID رو برگردونید و در اینجا Transaction رو Roleback کنید
Elham_gh
دوشنبه 22 بهمن 1386, 13:37 عصر
فقط غیر ممکن ، غیر ممکنه ;)
یک Transaction بسازید و در اون INSERT کنید و با SELECT SCOPE_IDENTITY مقداز ID رو برگردونید و در اینجا Transaction رو Roleback کنید
دوست عزیز این کار غیر ممکن است. و پاسخ شما درست نیست.
mhadvi_mahmaood
دوشنبه 22 بهمن 1386, 18:46 عصر
دوست عزیز این کار غیر ممکن است. و پاسخ شما درست نیست.
ایشون با این کار خواستند نشون بدهند که چطور میشه در فیلد Identity یک gap به وجود آورد. پس طبق گفته های شما و مثال ایشون به علت به وجود آمدن gap بدست آوردن شماره بعدی فیلد Identity امکان پذیر نیست و شیوه هایی که استفاده میشه همیشه درست نیست و ممکنه به مشکل بر بخوره.
ببخشید که جواب های درست دوستان رو مجددا" تکرار کردم. مخصوصا" شما که استاد بنده هستید.
Aidin
دوشنبه 22 بهمن 1386, 22:01 عصر
دوست عزیز این کار غیر ممکن است. و پاسخ شما درست نیست.
ممکنه دلیل رو هم توضیح بدید ؟
ممنون
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.