PDA

View Full Version : حرفه ای: درج همزمان و برگراندن آی دی های مربوطه



raziyehbazargan
سه شنبه 21 خرداد 1392, 12:50 عصر
سلام دوستان

من دوتا جدول دارم ...باید بعد از عمل درج در جدول 1 ، id اورن رو بدارم و در جدول 2 قرار بدم

بحث سر موضوع تداخل و اشتباه برداشتن id زیاد هست و من واقعا نمیدونم بهترین روش برای انجام این کار چیه؟

ممنون میشم دوستان بهترین روش برای این کار رو توضیح بدن

alexmcse
سه شنبه 21 خرداد 1392, 13:21 عصر
آیا دو جدول با هم در ار تباط هستند یعنی فورگین کی دارند ؟

hamid_hr
سه شنبه 21 خرداد 1392, 13:43 عصر
اينو ميتوني استفاده كني

declare @tbl1 table(
id1 bigint IDENTITY(1,1),
name nvarchar(25)
)

declare @tbl2 table(id2 bigint)

insert into @tbl1 (name)
output inserted.id1 into @tbl2
values(N'حميد')

select * from @tbl2

با اون output ميتوني id رو در بياري و استفاده كني

raziyehbazargan
سه شنبه 21 خرداد 1392, 13:49 عصر
آیا دو جدول با هم در ار تباط هستند یعنی فورگین کی دارند ؟

بله با هم در ارتباط هستند..تداخل پیش نمیاد ..مثلا دوکارب همزمان insert رو انجام بدن؟؟

alexmcse
سه شنبه 21 خرداد 1392, 15:39 عصر
بله با هم در ارتباط هستند..تداخل پیش نمیاد ..مثلا دوکارب همزمان insert رو انجام بدن؟؟

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

raziyehbazargan
چهارشنبه 22 خرداد 1392, 11:21 صبح
بله تداخل پیش می آید
باید جدولی که فورکین کی برروی آن انجام شده بهد از جدولی که فیلد آن برای فورگین کی انتخاب شده اینزرت کنی
اینزرت جدول اول بعد سلکت آی دی جدول اول بعد اینزرت جدول دوم

من دستوراتمو سمت ویژوال مینویسم و از پروسیجر اسفاده نمیکنم

این دستور درست عمل نمیکنه
مشکلش چیه؟؟ممنون میشم راهنمایی کنین
public bool Insert(DADamageEvent DamageEvent)
{
try
{
string SqlIns = "INSERT INTO Tbl_DamageEvent (DamageDate,RegistrationDate,LetterNo,Container_Id ,Phase_Id,Position_Id,Resp_Id,Type_Id,Reason_Id,Op erator_Id,CustomType_Id,EmptyFull_Id,ExpertView,De scription,ShippingLine_Id,Shipping_Id,Is_Services) VALUES (N'" + DamageEvent.DamageDate + "',N'" + DamageEvent.RegistrationDate + "',N'" + DamageEvent.LetterNo + "','" + DamageEvent.Container_Id + "','" + DamageEvent.Phase_Id + "','" + DamageEvent.Position_Id + "','" + DamageEvent.Resp_Id + "','" + DamageEvent.Type_Id + "','" + DamageEvent.Reason_Id + "','" + DamageEvent.Operator_Id + "','" + DamageEvent.CustomType_Id + "','" + DamageEvent.EmptyFull_Id + "',N'" + DamageEvent.ExpertView + "',N'" + DamageEvent.Description + "','" + DamageEvent.ShippingLine_Id + "','" + DamageEvent.Shipping_Id + "','" + DamageEvent.Is_Services + "') ";
string GetLastId= "Select Scope_Identity()";

objDAL.ExecuteNoneQuery(SqlIns);
LastId=Convert.ToInt32(objDAL.ExecuteScaler(GetLas tId));
return true;
}
catch (Exception)
{
throw;
}
}

fakhravari
چهارشنبه 22 خرداد 1392, 12:50 عصر
http://barnamenevis.org/showthread.php?376629-%D9%85%D9%82%D8%AF%D8%A7%D8%B1-%D8%A8%D8%B1%DA%AF%D8%B4%D8%AA%DB%8C-%D8%A8%D8%B9%D8%AF-%D8%A7%D8%B2-%D8%AD%D8%B0%D9%81

Mahmoud.Afrad
چهارشنبه 22 خرداد 1392, 19:44 عصر
دو تا کوئری رو با هم اجرا کن.

string SqlIns = "INSERT INTO Tbl_DamageEvent (DamageDate,RegistrationDate,LetterNo,Container_Id ,Phase_Id,Position_Id,Resp_Id,Type_Id,Reason_Id,Op erator_Id,CustomType_Id,EmptyFull_Id,ExpertView,De scription,ShippingLine_Id,Shipping_Id,Is_Services) VALUES (N'" + DamageEvent.DamageDate + "',N'" + DamageEvent.RegistrationDate + "',N'" + DamageEvent.LetterNo + "','" + DamageEvent.Container_Id + "','" + DamageEvent.Phase_Id + "','" + DamageEvent.Position_Id + "','" + DamageEvent.Resp_Id + "','" + DamageEvent.Type_Id + "','" + DamageEvent.Reason_Id + "','" + DamageEvent.Operator_Id + "','" + DamageEvent.CustomType_Id + "','" + DamageEvent.EmptyFull_Id + "',N'" + DamageEvent.ExpertView + "',N'" + DamageEvent.Description + "','" + DamageEvent.ShippingLine_Id + "','" + DamageEvent.Shipping_Id + "','" + DamageEvent.Is_Services + "') ; ";
string GetLastId = "Select Scope_Identity()";
LastId = Convert.ToInt32(objDAL.ExecuteScaler(SqlIns + GetLastId));

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