ورود

View Full Version : پرکردن کلید خارجی در پروسجر



Kubuntu
یک شنبه 12 تیر 1390, 00:49 صبح
سلام بچه ها!

اگه دوتا جدول داشته باشیم که باهم relationship داشته باشند. در پروسجر چگونه مقدار کلید خارجی را پر می کنیم. (لطفا یک مثال از insert و update بزنید)

سپاس!

*** البته من تو نت گشتم اینو پیدا کردم ، نمی دونم درسته یا نه:


insert into tableA(fields....)
values (...)

insert into tableB(FKA,....)
values(IDENT_CURRENT('tableA'),....)




FKA برابر کلید خارجی از جدولA است.
اگه درسته میشه یه مثال برای update واسم بزنید!

ممنون!
منتظر کمکتان هستم

behrouzlo
یک شنبه 12 تیر 1390, 10:07 صبح
کلید اصلی شما به چه حالت است یعنی توسط کاربر مقدار دهی می شود یا یک Identity است

Kubuntu
یک شنبه 12 تیر 1390, 10:19 صبح
همه کلید ها چه خارجی چه اصلیidentity هستند. البته با کلید اصلی مشکلی ندارم چون خودش پر می شه الان مشکلم سر خارجیه که نمی دونم از فرمم چجوری پرش کنم. آخه تو فرمم کلیدها رو نشون نمی دم.

** برنامه ام به زبان سی شارپه

Kubuntu
یک شنبه 12 تیر 1390, 10:36 صبح
من این سوال رو توی تالار سی شارپ هم گفته بودم الان ایده زیر به ذهنم رسید
http://barnamenevis.org/showthread.php?293941-%D9%BE%D8%B1%DA%A9%D8%B1%D8%AF%D9%86-%D9%BE%D8%A7%D8%B1%D8%A7%D9%85%D8%AA%D8%B1-%DA%A9%D9%84%DB%8C%D8%AF-%D8%AE%D8%A7%D8%B1%D8%AC%DB%8C-%D8%A7%D8%B2-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE&p=1291240&viewfull=1#post1291240

اگه راه حل بهتری هم هست لطفا بهم بگید.

behrouzlo
یک شنبه 12 تیر 1390, 22:37 عصر
شما می توانید از @@IDENTITY برای بدست آوردن آخرین مقدار فیلد IDENTITY در دستور Insert قبلی استفاده کنید. تابع IDENT_CURRENT('tableA') نیز صحیح می باشد ولی با این تفاوت که اخرین مقداری که برای IDENTITY در آن جدول ایجاد شده را برگشت می دهد و این می تواند در محیط چند کاربر مشکل ایجاد کندولی @@IDENTITY آخرین مقدار در داخل آن اتصال را برگشت می دهد.