• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

کوئری برای افزودن مقدار کلید خارجی

fivestar

Registered User
تاریخ عضویت
14 نوامبر 2006
نوشته‌ها
73
لایک‌ها
0
دو تا جدول داریم که از طریق یه کلید خارجی بهم متصل هستن .یعنی یک فیلد داریم که در جدول اصلی بعنوان کلید اصلی تعریف شده و در جدول فرعی یه فیلد معمولیه.
میخوام وقتی مقدار رو در جدول اصلی وارد می کنم بصورت اتومات در جدول فرعی هم مقدار فیلد وارد شود .

چه کو ئری باید بنویسم؟؟؟
 

fivestar

Registered User
تاریخ عضویت
14 نوامبر 2006
نوشته‌ها
73
لایک‌ها
0
چیز عجیب غریب و پیچیده ای نیست !

چند تا جدول اصلی داریم به اسم SECTOR که در هر کدوم PrimaryKey اسمش هست ID که با اضافه شدن هر رکورد به مقدار اون یه دونه اضافه می شه

یه جدول مادر داریم به اسم ATC که برای رابطه با تک تک جدول های SECTOR ء از هر جدول ء فیلد ID رو به عنوان کلید خارجی قرض می گیره

یعنی تو جدول ATC یه فیلد داریم به اسم IDSECTOR1 که دقیقا مشخصه که همون فیلد ID در جدول SECTOR1 هست و یه فیلد داریم به اسم IDSECTOR2 که همون فیلد ID در جدول SECTOR2 هست و ......

تو خود جدول ATC هم PrimaryKey اسمش هست ID که با اضافه شدن هر رکورد به مقدار اون یه دونه اضافه می شه
حالا جای جالب داستان اینجاست D: تمام جدول های SECTOR و جدول مادر که اسمش ATC بود ء همشون تو یه فرم عملیات INSERT شون انجام میشه !


من الان به راحتی می تونم برای تک تک جدول های SECTOR یه خط QUERY بنویسم و Insert رو براشون انجام بدم (به زبان سی شارپ)


;"(String insertsector1="INSERT INTO SECTOR1(P1,P2)VALUES(S1.text,S2.text

(چون با اضافه کردن رکورد مقدار ID بطور خودکار +1 می شود ء دیگر نیاز نیست از طریق QUERY آن را وارد کنیم)

ولی برای جدول ATC که فیلد کلید اصلی هر جدول SECTOR رو تو خودش داره
برای پر کردن این فیلدها به مشکل خوردم

;"(?????,????) String insertsector1="INSERT INTO SECTOR1(IDSECTOR1,IDSECTOR2)VALUES


علامت سوالها یعنی اینکه هیچ OBJ ندارم که مقدار IDSECTOR ها رو ازش بخونم !!!!!!!!!!!!!!

پس ترجیح میدم یه کاری کنم که IDSECTOR ها بطور اتومات تو ATC هم اضافه شه D:
 

H_R

مدیر بازنشسته
تاریخ عضویت
30 مارس 2005
نوشته‌ها
3,298
لایک‌ها
17
سن
43
محل سکونت
North Pole
چیکار میکنی ؟! خودت سوال میکنی خودتم جواب میدی ؟!؟!

بهترین کار اینه که بیای و strored procedure بنویسی ، یه اینزرت معمولی میکنی بعد با IDENTITY@@ آیدی (یا همون کلید اصلی جدول الیه رو میگیری ) بعد میای و با داشتن اون آیدی دوباره یه اینزرت دیگه میکنی !

اگر بلد نیستی استورد پروسیجر بنویسی و مسممی که حتما برنامه نویسی کنی بهتره دو روز وقت بذاری و یه چیزایی یاد بگیری !
 

fivestar

Registered User
تاریخ عضویت
14 نوامبر 2006
نوشته‌ها
73
لایک‌ها
0
دمتون گرم که کمک کردین . رفتم دنبالش یه تابع گیر آوردم که و قتی میزاریش تو sp و اجرا می کنی دقیقا آخرین مقدار فیلد ID رو بر می گردونه

(' اسم جدول') SELECT IDENT_CURRENT

حالا می خوام برای تک تک جدولهای sector از این تابع استفاده کنم . نیاز دارم که مقدار هر دستور select رو بریزم تو یه متغیر محلی که وقتی خواستم insert کنم راحت باشم !

دستوری پیدا نکردم که بتونم نتیجه هر SELECT رو بریزم تو یه متغیر محلی . چی کار کنم ؟؟؟؟
 
بالا