PDA

View Full Version : مشكل در برقراري ارتباط اتوماتيك بين كليد اصلي و كليد خارجي



n@seri
چهارشنبه 12 آبان 1389, 12:23 عصر
سلام.
من دارم يك پرو‍ژه به C# مينويسم، ميخوام با پر كردن فيلد كليد اصلي در هر كدام از جداول،كليد خارجي مربوط به آن در جدول ديگه به طور اتوماتيك پر شه.
يعني وقتي در يك فرم مثلا ID را وارد ميكنم، ديگه لزومي نداشته باشه كه در يك فرم ديگه همون ID رو بزنم.

حمیدرضاصادقیان
پنج شنبه 13 آبان 1389, 09:46 صبح
سلام.
یک راهش اینه که داخل یک Transaction شما دو دستور insert بنویسید. یا از Trigger استفاده کنید روی جدول اصلی که بعد از Insert همون رکورد رو در جدول دومی نیز اضافه کنه. از لحاظ Performance روش اول توصیه می شود.
موفق باشید

m_omrani
جمعه 14 آبان 1389, 00:30 صبح
با اجازه، این رو فراموش کردید بهشون بگید:

وقتی یه رکورد توی جدول اصلی درج می شه، کلیدش رو چطور می خواهید به دست بیاورید؟ اینجا است که باید از @@IDENTITY یا @@SCOPE_IDENTITY() استفاده کنید. مثلاً این طوری:


begin try
begin tran

insert into tbl_parent(....) values (...)

set @ParentID = @@scope_identity()

insert into tbl_child(ParentID,...) values(@ParentID,...)

commit tran
end try
begin catch
rollback tran
end catch

حمیدرضاصادقیان
جمعه 14 آبان 1389, 20:33 عصر
با اجازه، این رو فراموش کردید بهشون بگید:

وقتی یه رکورد توی جدول اصلی درج می شه، کلیدش رو چطور می خواهید به دست بیاورید؟ اینجا است که باید از @@IDENTITY یا @@SCOPE_IDENTITY() استفاده کنید. مثلاً این طوری:


begin try
begin tran

insert into tbl_parent(....) values (...)

set @ParentID = @@scope_identity()

insert into tbl_child(ParentID,...) values(@ParentID,...)

commit tran
end try
begin catch
rollback tran
end catch

ممنون جناب omrani. اگر کلید اصلی identity نباشه دیگه کد شما جوابگو نخواهد بود.