PDA

View Full Version : انتقال اطلاعات یک جدول به جدول دیگه(تعداد ستون های نامساوی)



Ehsan rashydy
پنج شنبه 24 مرداد 1392, 10:22 صبح
با سلام

آقا ما 2 تا جدول داریم، مثلا یکی به اسمه foo یکی هم به اسمه bar،
حالا میخوام اطلاعات جدول foo رو به bar انتقال بدم،
این رو هم در نظر بگیریم که تعداد فیلدهای bar بیشتر از foo هست!

خلاصه بگم چیزی که میخوام اینه که یه SELECT روی foo بزنم، بعد که کوئری اجرا شد بتونم سطرهای برگردونده شده رو تغییر بدم به طوری که به ازای فیلدهایی که جدول foo نداره NULL بزارم، و بعد بتونم این سطرها رو توی جدول مقصد INSERT کنم(یعنی بریزم تو bar).



با تشکر.

Reza_Yarahmadi
شنبه 26 مرداد 1392, 07:49 صبح
مسئله رو پیچیده کردید!
Insert Into Bar(Column1, Column2, ...) Select Column_1, Column_2, ... From Foo
هر فیلدی هم که توی Select نباشه NULL میگیره

محمد سلیم آبادی
شنبه 26 مرداد 1392, 12:07 عصر
هر فیلدی هم که توی Select نباشه NULL میگیره
لزوما نه.
سه حالت داره.


حالت اول زمانی اتفاق می افته که ستون مذکور nullable نبوده و مقدار default هم نداشته. در این حالت عمل INSERT با شکست مواجه میشه. چرا که بطور پیشفرض برای آن ستون هایی که در comma list ذکر نشدن مقدار Null در نظر گرفته میشه. البته اگر ستون مذکور مقدار پیشفرض داشت به جای Null مقدار تعیین شده لحاظ میشد.



حالت دوم زمانی رخ میده که آن ستون دارای مقدار default بوده در این حالت به جای null مقدار معین شده برای آن ستون درنظر گرفته میشه. در اینجا فرقی نمیکنه که ستون nullable بوده باشد یا نه.



حالت سوم موقعی هست که آن ستون nullable بوده و دارای هیچ مقدار default ای نیست. در این حالت آن چیزی که شما اشاره کردین رخ خواهد داد. یعنی درج مقدار null.