PDA

View Full Version : بدست آوردن id در هنگام اضافه کردن رکورد



student1
دوشنبه 08 آذر 1389, 11:20 صبح
با سلام
من سه جدول تو در تو دارم و ارتباطشان یک به چند است.
در جدول دوم فیلد id بصورت اتونامبر و کلید اصلی جدول دوم است و کلید خارجی جدول سوم در هنگام اضافه کردن یک رکورد و ارسال فیلد کلید اصلی به صفحه مقصد مشکل دارم.
نمی دونم چطور در یک صفحه هم یک رکود اضافه کنم همزمان id اون رکورد را که اتونامبر است به صفحه بعد بفرستم
اگر بخواهم اول اضافه کنم و بعد جستجو کنم رکورد را احتمال اینکه دو رکورد در فیلد جستجو مشترک باشند وجود دارد مگر اینکه در همان صفحه در شرطم تمام فیلد ها را چک کنم این راه منطقی هست ؟

tazarvmmr
دوشنبه 08 آذر 1389, 11:29 صبح
شما با چه روشی دارین رکورد اضافه میکنین؟

bfreind10
دوشنبه 08 آذر 1389, 12:26 عصر
شما برای بدست آوردن آخرین آی دی رکورد اضافه شده در دیتابیس کافی است بعد از اجرای کوئری ایجاد یک کوئری اجرا کنید که بزرگترین آی دی دیتابیس را به شما برگرادند. به همین سادگی!

Amir Taghavi
دوشنبه 08 آذر 1389, 13:22 عصر
insert into TABLE_NAME
(Field1, Field2) output inserted.[FIELD_NAME]
values(V1, V2) [FIELD_NAME] اسم فیلد auto number و خروجی این query مقدار فیلد auto number هستش.

student1
دوشنبه 08 آذر 1389, 14:13 عصر
شما برای بدست آوردن آخرین آی دی رکورد اضافه شده در دیتابیس کافی است بعد از اجرای کوئری ایجاد یک کوئری اجرا کنید که بزرگترین آی دی دیتابیس را به شما برگرادند. به همین سادگی!

به این فکر کرده بودم ولی اگر دونفر همزمان در این صفحه باشند و همزمان داده وارد کنند ایرادی پیدا نمی کنه
کاربر اولی با دستور insert داده را وارد کرده در همان زمان کاربر دیگه همین کار را انجام بدهد ای دی بدست اومده در این حالت درسته ؟ این اضافه کردن و پیدا کردن ماکزیمم هر دو همزمان روی یک رکورد انجام می شه ؟ یعنی رکورد بلاک می شه ؟

با دوتا sqlcommand و با یکبار باز کردن دیتا بیس و در انتها بستن این عملیات بلاک شدن انجام می شود؟

student1
دوشنبه 08 آذر 1389, 14:15 عصر
insert into TABLE_NAME
(Field1, Field2) output inserted.[FIELD_NAME]
values(V1, V2) [FIELD_NAME] اسم فیلد auto number و خروجی این query مقدار فیلد auto number هستش.

این دستورو تو اسکیوال امتحان می کنم error می ده

mohsen_f_b
دوشنبه 08 آذر 1389, 14:26 عصر
با سلام
شما باید رکورد رو با استفاده از SCOPE_IDENTITY() توی SQL بگیرین و ادامه کار رو انجام بدین.
یک نمونه کد واستون می زارم .(رفتم خونه اینجا VS ندارم)

موفق و پیروز باشید

taghi.km
دوشنبه 08 آذر 1389, 14:37 عصر
declare @U table(a int , b int ,c int)
insert into tbltest
(b,c) output inserted.[a] , inserted.[b] ,inserted.[c] INTO @U
values (1,1)
select * from @U
این کد رو تست کن فیلد a اتو نامبر هست

Amir Taghavi
دوشنبه 08 آذر 1389, 15:41 عصر
این دستورو تو اسکیوال امتحان می کنم error می ده
من با sql 2008 کار میکنم!
چه خطایی میده؟