PDA

View Full Version : سوال: تست استفاده شدن اطلاعات در جداول ارتباطی



lajevardi106
یک شنبه 01 اردیبهشت 1392, 15:52 عصر
سلام
جدولی دارم که با چندین جدول در ارتباط است و دیتای آن در آن جداول استفاده میشود (از طریق ID و کلید خارجی)
آیا ممکن است به هنگام حذف اطلاعات جدول اصلی، به صورت اتوماتیک تشخیص دهد که آیا این اطلاعاتی که میخواهد حذف شود در جایی استفاده شده است یا خیر.
یا این که باید استفاده یا عدم استفاده شدن این اطلاعات را در تک تک جداول مرتبط در داخل برنامه چک کنم؟

سعید کشاورز
یک شنبه 01 اردیبهشت 1392, 16:31 عصر
تا جایی که اطلاع دارم توی مباحث بانک اطلاعتی یه مبحثی به اسم "قیدها" داریم..
این مبحث میاد همین مواردی رو که گفتین چک میکنه..به صورت خودکار..فقط شما باید براش مشخص کنید..
مثلا اگه یه جدول کالا داریم و یه جدول قیمت:
کالای برنج در جدول اول وجود داره..قیمتش هم توی جدول دوم..
حالا اگه یه کالای روغن توی جدول اول وجود نداشته باشه و بخواهیم توی جدول دوم روعن ثبت کنیم خود دیتابیس تشخیص خطا میده..
البته من این مواردی رو که گفتم رو خیلی وقت پیش خوندم زیاد یادم نیست چی به چی بود..اگه اشتباه میکنم دوستان بگن تا منم اطلاعاتم کامل بشه..ممنون

veniz2008
یک شنبه 01 اردیبهشت 1392, 19:50 عصر
سلام
جدولی دارم که با چندین جدول در ارتباط است و دیتای آن در آن جداول استفاده میشود (از طریق ID و کلید خارجی)
آیا ممکن است به هنگام حذف اطلاعات جدول اصلی، به صورت اتوماتیک تشخیص دهد که آیا این اطلاعاتی که میخواهد حذف شود در جایی استفاده شده است یا خیر.
یا این که باید استفاده یا عدم استفاده شدن این اطلاعات را در تک تک جداول مرتبط در داخل برنامه چک کنم؟
سلام.
اگر ارتباط بین جداول رو برقرار کنید (باید خودتون این ارتباط رو برقرار کنید) ، موقع حذف یک کلید اصلی (همون جدول اولیه شما که جداول دیگه بهش وابسته هستن)، اگر اون مقدار در جداول وابسته (که کلید خارجی دارند) وجود داشته باشه ، خود sql به شما خطا میده که نمیشه کلیدی رو پاک کرد که در جداول دیگه به عنوان کلید خارجی استفاده شده.
پس تنها کاری که باید انجام بدید اینه که رابطه بین جداول رو برقرار کنید (منظورم همون تعیین کلید اصلی و خارجی هست).
موفق باشید.

Mahmoud.Afrad
دوشنبه 02 اردیبهشت 1392, 12:51 عصر
اگر به صورت ویژوال ارتباط رو برقرار میکنید ، در پنجره Foriegn key Relationships در قمست General کلید خارجی رو تعریف میکنید. کافیه در همین پنجره از گروه Database Designer قسمت Insert and update specification گزینه های Delete Rule و Update Rule را روی Cascade بزارید تا در صورتی که در جدول اصلی رکوردی حذف یا آپدیت شد در جدول های دیگر کلید خارجی به صورت خودکار به روز یا حذف بشه. در اینصورت نیازی نیست برای حذف یا برزورسانی کلیدهای خارجی کوئری بزنید.