PDA

View Full Version : دستور Insert



dr_csharp
دوشنبه 26 آذر 1386, 15:57 عصر
سلام . دوستان چطور میتونم در یک DataBase که مثلا دوتا جدول به نام AوB داره INSERT کنم ؟
جدول A با B یک ارتباط یک به چند دارد !

SYNDROME
دوشنبه 26 آذر 1386, 17:42 عصر
سلام . دوستان چطور میتونم در یک DataBase که مثلا دوتا جدول به نام AوB داره INSERT کنم ؟
جدول A با B یک ارتباط یک به چند دارد !
سوالتان واضح نیست.
اگر منظورتان انتقال اطلاعات بین دو تا جدول است از دستور Insert Into استفاده کنید.
موفق باشید

dr_csharp
دوشنبه 26 آذر 1386, 17:53 عصر
سوالتان واضح نیست.
اگر منظورتان انتقال اطلاعات بین دو تا جدول است از دستور Insert Into استفاده کنید.
موفق باشید

بله میدونم باید از INSERT INTO استفاده کرد . من منظورم اینه که باید اول در جدول INSERT ، A کنم و بعد یه INSERT دیگه در جدول B انجام بدم ؟ یا میشه هردوی INSERT ها رو با یک INSERT انجام داد !!؟

مثلا فیلدهای جدول A :
CompanyID که PK است
CompanyName
CompanyAddress
و فیلدهای جدول B :
CompanyID که FK میباشد ( همان CompanyID در جدول A )
Telephone

خوب حالا من اگه بخوام شماره تلفن برای شرکت وارد کنم چیکار باید کنم ؟
آیا باید اول CompanyName و CompanyAddress را وارد کنم و مقدار CompanyID رو بخونم و برم در جدول B بصورت دستی اون CompanyID رو وارد کنم و براش Telephone رو بنویسم ؟

JAFO_IRAN
دوشنبه 26 آذر 1386, 19:18 عصر
سلام

وقتی میگید مقدار CompanyID رو بخونم میشه فرض کرد که این فیلد IDENTITY هستش. سوالتون هم قاعدتا مربوط به وقتیه که میخوای همزمان Company و Telephone رو وارد کنی.

1. در این مثال خاص توصیه اینه که سناریو رو به دو بخش تقسیم کنی - مثلا در یک فرم شرکت رو تعریف کنی و یک کلید برای اضافه کردن تلفن‌ها بذاری - چون فکر کنم برای هر شرکت بیش از یک تلفن میخواهی که اینجوری تعریف کردی. اینجوری وقتی داری تلفنها رو وارد میکنی میدونی که برای چه شرکتیه و ID رو داری

2. اما اگه میخواهی همزمان با شرکت، مثلا تلفن اولش رو هم وارد کنی، راهش همون view که در چند پست قبل گفتم میشه. یک view روی join این دو جدول تعریف کن و براش تریگرهای instead of insert و delete و update بنویس. توی اون تریگرهای فیلدهای inserted رو به دو جدول تقسیم کن و دو تا insert یا update رو انجام بده. پس از insert کردن رکوردی که در نقش PK قرار داره، میتونی select @AKey = @@IDENTITY کنی و id مورد نیاز برای Insert دوم رو بدست بیاری...

البته این داستان مفصلیه و به شدت توصیه میکنم مقداری وقت بذاری و از books online داستان View و تریگرهاش رو بخونی...

ارادت

A.Nemati
دوشنبه 26 آذر 1386, 19:23 عصر
اگه CompanyID شما یک Identity باشه باید ابتدا جدول اول را insert کنی، یک Select از فیلد CompanyID آخرین رکورد بگیری و اونو در یک متغیر بریزی، سپس جدول دومت رو با مقدار اون متغیر Insert کنی.

dr_csharp
دوشنبه 26 آذر 1386, 19:30 عصر
سلام

وقتی میگید مقدار CompanyID رو بخونم میشه فرض کرد که این فیلد IDENTITY هستش. سوالتون هم قاعدتا مربوط به وقتیه که میخوای همزمان Company و Telephone رو وارد کنی.

1. در این مثال خاص توصیه اینه که سناریو رو به دو بخش تقسیم کنی - مثلا در یک فرم شرکت رو تعریف کنی و یک کلید برای اضافه کردن تلفن‌ها بذاری - چون فکر کنم برای هر شرکت بیش از یک تلفن میخواهی که اینجوری تعریف کردی. اینجوری وقتی داری تلفنها رو وارد میکنی میدونی که برای چه شرکتیه و ID رو داری

2. اما اگه میخواهی همزمان با شرکت، مثلا تلفن اولش رو هم وارد کنی، راهش همون view که در چند پست قبل گفتم میشه. یک view روی join این دو جدول تعریف کن و براش تریگرهای instead of insert و delete و update بنویس. توی اون تریگرهای فیلدهای inserted رو به دو جدول تقسیم کن و دو تا insert یا update رو انجام بده. پس از insert کردن رکوردی که در نقش PK قرار داره، میتونی select @AKey = @@IDENTITY کنی و id مورد نیاز برای Insert دوم رو بدست بیاری...

البته این داستان مفصلیه و به شدت توصیه میکنم مقداری وقت بذاری و از books online داستان View و تریگرهاش رو بخونی...

ارادت

دوست عزیز ممنون . راه حلی که دوست خوبم A.Nemati پیشنهاد دادن تقریبا مشابه همین راهی هست که شما فرمودین با View انجام بدم . آیا پیشنهاد شما علت خاصی داره و کارایی بهتری داره ؟

JAFO_IRAN
دوشنبه 26 آذر 1386, 20:32 عصر
سلام

من 2 جور گفته بودم. view وقتی به درد میخوره که بخواهی از دید بقیه سیستم (مثلا از دید کاربر) مثل یک table به نظر برسه - یعنی همون کارها (خواندن id و درج در جدول دوم) در سرور انجام بشه و از نگاه کاربر یک جدول ساده باشه که بشه توش insert کرد و راحت با فیلدهاش کار کرد. وگرنه هیچ نکته دیگری نیست.

ارادت

dr_csharp
سه شنبه 27 آذر 1386, 09:28 صبح
سلام

من 2 جور گفته بودم. view وقتی به درد میخوره که بخواهی از دید بقیه سیستم (مثلا از دید کاربر) مثل یک table به نظر برسه - یعنی همون کارها (خواندن id و درج در جدول دوم) در سرور انجام بشه و از نگاه کاربر یک جدول ساده باشه که بشه توش insert کرد و راحت با فیلدهاش کار کرد. وگرنه هیچ نکته دیگری نیست.

ارادت
ممنون میشم برای ساخت اون View راهنماییم کنی !؟ منظورم اینه که View که میسازم باید شامل چه فیلدهایی باشه (از فیلدهای جدول A , B ) ؟