PDA

View Full Version : بدست آوردن آخرین مقدار فیلد Identity در یک جدول



Mr.Programmer
دوشنبه 09 دی 1392, 10:54 صبح
سلام، خسته نباشید

بنده میخواهم آخرین مقدار فیلد Identity در جدول را بدون insert کردن بدست بیارم ....

از این کد استفاده کردم اما با جدول خالی مشکل داره


SELECT IDENT_CURRENT('tbl_kest')

شما راه حلی سراغ دارید ؟؟

خیلی ممنون

Tiam121
دوشنبه 09 دی 1392, 11:20 صبح
فکر کنم اگر از تابع MAX استفاده کنی جواب بده

Mr.Programmer
دوشنبه 09 دی 1392, 11:43 صبح
فکر کنم اگر از تابع MAX استفاده کنی جواب بده

خیر، MAX جواب نمیده ... اگر جدول خالی باشه Null برمیگردونه ... در صورتی که Identity مثلا باید 10 باشد ....

matin.soft
دوشنبه 09 دی 1392, 12:23 عصر
این لینکو یه تست بزن مفیده :
http://msdn.microsoft.com/en-us/library/ms175098.aspx

Mr.Programmer
دوشنبه 09 دی 1392, 14:50 عصر
این لینکو یه تست بزن مفیده :
http://msdn.microsoft.com/en-us/library/ms175098.aspx

خودم از همین روش IDENT_CURRENT اما خوب فایده نداشت .... با جدول خالی (Identity Null) مشکل داره و مقدار Seed رو برمیگردونه

مهدی اسماعیلی
دوشنبه 09 دی 1392, 16:52 عصر
اینو امتحان کنید ...

SELECT IsNull(IDENT_CURRENT( 'TableName' ),0) + 1 as CurrentIdentity

khokhan
دوشنبه 09 دی 1392, 17:10 عصر
خیر، MAX جواب نمیده ... اگر جدول خالی باشه Null برمیگردونه ... در صورتی که Identity مثلا باید 10 باشد ....
اگه از این کد استفاده کنی در صورت خالی بودن جدول دچار مشکل می شوید :


int intIdt = db.Users.Max(u => u.UserId);

چاره کار استفاده از این دستور هست که در صورت خالی بودن جدول مشکلی پیش نیاد ::لبخند:


int? intIdt = db.Users.Max(u => (int?)u.UserId);

Mr.Programmer
دوشنبه 09 دی 1392, 17:25 عصر
اگه از این کد استفاده کنی در صورت خالی بودن جدول دچار مشکل می شوید :


int intIdt = db.Users.Max(u => u.UserId);

چاره کار استفاده از این دستور هست که در صورت خالی بودن جدول مشکلی پیش نیاد ::لبخند:


int? intIdt = db.Users.Max(u => (int?)u.UserId);
خیلی ممنون
اگه میشه روش ADO.Net هم بگید چطوریه ...
Max برای Identity هم جواب میده ؟؟ فکر کنم اگه جدول خالی باشه مقدار Null برگردونده میشه و نمیشه مقدار Identity رو گرفت . . .

Mr.Programmer
دوشنبه 09 دی 1392, 17:30 عصر
اینو امتحان کنید ...

SELECT IsNull(IDENT_CURRENT( 'TableName' ),0) + 1 as CurrentIdentity
این درسته ... اما مشکل اینه که اگر مقدار Identity برابر Null باشه IDENT_CURRENT مقدار Seed که 1 هست را بر میگردونه و جواب 2 میشه :افسرده:

khokhan
دوشنبه 09 دی 1392, 17:41 عصر
خیلی ممنون
اگه میشه روش ADO.Net هم بگید چطوریه ...
Max برای Identity هم جواب میده ؟؟ فکر کنم اگه جدول خالی باشه مقدار Null برگردونده میشه و نمیشه مقدار Identity رو گرفت . . .
.................................................. .............................:لبخند:

SELECT MAX(date)
FROM mydate
HAVING COUNT(*) > 0

یا


select ident_current('table_name')