PDA

View Full Version : وابستگی اطلاعات



Happy_davood
پنج شنبه 28 آبان 1388, 10:05 صبح
سلام
فرض بفرمائید من یه Relation مابین جدول یک و دو ایجاد کردم (از طریق کلید خارجی دو تا جدول با هم ارتباط پیدا کردند)

طبیعی هست که زمان پاک کردن اطلاعات از جدول Primary Key Table به علت وجود داده های مرتبط در جدول Foreign Key Table امکان حذف وجود نداشته باشه و SQL خطا بده .

حالا می خوام بدونم به غیر از استفاده از روش هایی مثل بلوک Try & catch (مدیریت خطای مربوط به Dependency) سمت برنامه و یا استفاده از SELECT برای پیدا کردن داده های مرتبط ، خود SQL امکاناتی برای تشخیص وجود اطلاعات مرتبط داره یا نه !؟

برای مثال بشه نام جدول ، عنوان کلید و مقداری که می خواهیم پاک کنیم رو به یک تابع بدیم و اون هم در جواب بگه که Dependency وجود داره یا نه ؟

sia_2007
پنج شنبه 28 آبان 1388, 11:00 صبح
اگه میخوای یک جا هم خودش و هم بچه هاش به هم حذف بشوند؛ از Cascade Delete استفاده کن.
در Relation روی خط بین این دوکلیک کن و در Properties سمت چپ بزن Cascade Delete.
موفق باشی

Happy_davood
پنج شنبه 28 آبان 1388, 11:14 صبح
نخیر دوست عزیز . سعی کردم کامل توضیح بدم تا کسی دچار اشتباه نشه ولی مثل اینکه کامل نبوده !

من اصلاً قصد پاک کردن اون ردیف از اطلاعات رو ندارم ! هدف این هست که مثلاً قبل از پاک کردن پی به وابستگی ببرم تا بتونم پیغام مناسب به کاربر بدم ! یا قبل از ویرایش اطلاعات به کاربر اطلاع بدم که "امکان ویرایش وجود نداره چون این اطلاعات در قسمت های دیگه مصرف شده اند" .

خوب در بعضی پروژه ها نیاز هست که در صورت استفاده شدن از یک داده دیگه امکان تغییرات یا حذف اون وجود نداشته باشه .

من می تونم یا SELECT بزنم از جداول مرتبط و بدونم که آیا این ردیف از جدول در جداول دیگه مورد استفاده قرار گرفته یا نه ! ولی مکنه زمانبر باشه !
یا می تونم داخل Transaction اون ردیف رو پاک کنم و اگه بانک خطا داد از روی شماره خطا مطلع بشم که داده در جداول دیگه مصرف شده بوه و RollBack کنم !

ولی قبل از این کار ها می خوام بدونم آیا روش مناسب تری برای انجام این کار وجود داره یا نه !؟