ورود

View Full Version : نحوه CascadeUpdate برای دوفیلد یک جدول؟؟؟؟



Zabi42
دوشنبه 18 آذر 1392, 02:27 صبح
باسلام
من یک جدول دارم که اطلاعات کاربرام توش هست یک جدول هم دارم که اطلاعات مربوط به سفارش کالاها درش هست خوب هر کاربر میتونه هم فروشنده باشه هم خریدار و در جدول دوم دو فیلد با نام های فروشنده و خریدار وجود دارد که یک رابطه بین کلید اصلی جدول کاربران و فیلد خریدار در جدول سفارشات وجود داره مشکل من اینجاست که وقتی کاربر نام کاربریشو که کلید اصلی جدول کاربران هستش آپدیت کنه فیلد خریدار به صورت آبشاری آپدیت میشه و این درسته اما چطور میتونم فیلد فروشنده رو آپدیت کنم؟؟؟؟

در کل میخوام وقتی کلید اصلی جدول 1 آپدیت شد به جای یک فیلد ، دو فیلد از جدول دو آپدیت بشه چی کار باید بکنم؟؟؟

dublsigma
دوشنبه 18 آذر 1392, 10:16 صبح
متاسفانه امکان Cascade کردن این تغییرات وجود ندارد.
فرض کنید دو کلید خارجی به یک جدول متصل هست. و کلید اولیه جدول Master تغییر می کند. حالا DBMS نمی داند که از چه مسیری باید این ویرایش را انجام دهد. که با خطای Multiple Cascade Path مواجه خواهید شد.

پس باید از خیر Cascade کردن تغییرات توسط Foreign Key بگذرید. البته میشه اینکار را توسط Trigger انجام داد.

ضمنا شما باید از کلید اولیه جدول کاربران برای مقادیر کلید خارجی در جدول خرید/فروش استفاده کنید از از ستون Name کاربر. گرچه اگر مبادرت به ایجاد این Relation بکنید DBMS جلوی شما را خواهد گرفت. چون ستون Name منحصر بفرد نیست.

قبلا یه مقاله راجع به این موضوع تالیف کردم. اما اگر اجازه بدین در سر فرصت یک نسخه جدید با شرح کاملتر تهیه کنم و در اختیار شما قرار بدم.

Zabi42
دوشنبه 18 آذر 1392, 10:47 صبح
dublsigma مرسی از پاسخی که دادی
منم جستجو کردم و دیدم ظاهرا میشه با Trigger انجامش داد ولی متاسفانه زیاد مسلط به کد نویسی در sql نیستم دوستان اگه میدونن راهنمایی بفرمایند