PDA

View Full Version : سوال: بدست آوردن آخرین کلید تولید شده جدول در دیتابیس



atashsavar
چهارشنبه 31 فروردین 1390, 17:19 عصر
با سلام
من دوتا جدول در دیتابیس دارم که تو اولی کلید اصلی از نوع identity increment است و به عنوان کلید خارجی در جدول دوم ، می خوام وقتی که اطلاعاتی در جدول اول ثبت کردم کلید تولید شده را بدست بیارم که بتونم در جدول 2 از اون استفاده کنم، چطوری میتونم این کلید را بدست بیارم؟

b.paseban
چهارشنبه 31 فروردین 1390, 17:30 عصر
سلام بر شما.
شما بعد از درج به دیتا بیس وصل بشین و یه selcet به دیتا بیس بزنین به این شکل:
SELECT TOP 1 PK FROM tblname.

majnun
چهارشنبه 31 فروردین 1390, 18:32 عصر
select max(id) from table_news

L_eskandary
چهارشنبه 31 فروردین 1390, 19:36 عصر
سلام
خوب همون طور که دوستان گفتن شما می تونین یه Select بزنین و id رو بدست بیارین البته این کار رو می تونین تو همون query که برای insert نوشتین هم بنویسین :


com.commandtext ="insert into tbl"+ " select top 1 id from tbl order by id desc"
int id=(int) com.executescalar();

ولی خوب مطلبی که باید در نظر بگیرین این هستش که اگه همزمان چند نفر عملیات insert رو انجام بدن ممکن تو برگردوندن id مربوط به عملیات insert شما مشکل بوجود آمده و در واقع id درست رو برنگردونه . برا رفع این مشکل هم خوب اگه تو insert یه مقدار منحصر بفرد رو هم insert می کنین اون رو هم بعنوان شرط دستور select قرار بدین و یا اینکه از isolation level استفاده کنین و تا زمانی که insert و select مربوط به یک کاربر صورت بگیره عملیات مربوط به اون table رو lock کنین.
موفق باشین.

skflower
سه شنبه 21 تیر 1390, 18:28 عصر
شما میتونید با استفاده از تابع زیر کلید رو خودتون تولید کنید و در دیتابیس وارد کنید.

string ID = Guid.NewGuid().ToString();
اونوقت توی متغیر ID مقدار ذخیره شده رو دارید

mehdi.mousavi
سه شنبه 21 تیر 1390, 18:47 عصر
سلام.
روش صحیح، استفاده از SCOPE_IDENTITY، IDENTITY و ... هستش.


پاسخ شماره یک (http://barnamenevis.org/showthread.php?274447-%D8%B1%D9%88%D8%B4-%D8%A7%D8%B5%D9%88%D9%84%DB%8C-%D8%A8%D9%87-%D8%AF%D8%B3%D8%AA-%D8%A2%D9%88%D8%B1%D8%AF%D9%86-%DA%A9%D8%AF-%D8%B1%DA%A9%D9%88%D8%B1%D8%AF-%D8%AC%D8%AF%DB%8C%D8%AF-%D8%AB%D8%A8%D8%AA-%D8%B4%D8%AF%D9%87&p=1212546&viewfull=1#post1212546)
پاسخ شماره دو (http://barnamenevis.org/showthread.php?189524-%D8%A2%D8%AE%D8%B1%DB%8C%D9%86-%D9%81%DB%8C%D9%84%D8%AF-%DA%A9%D9%84%DB%8C%D8%AF-%D8%AF%D8%B1%D8%AC-%D8%B4%D8%AF%D9%87-Identity&p=847495&viewfull=1#post847495)
پاسخ شماره سه (http://barnamenevis.org/showthread.php?219049-%D8%A8%D8%AF%D8%B3%D8%AA-%D8%A2%D9%88%D8%B1%D8%AF%D9%86-%D8%A2%D8%AE%D8%B1%DB%8C%D9%86-ID-%D8%AF%D8%B1-%D8%AC%D8%AF%D9%88%D9%84&p=972012&viewfull=1#post972012)
و ...

موفق باشید.

پاورقی: لطفا قبل از ایجاد تاپیک جستجو نمایید.