PDA

View Full Version : حذف یک رکورد از جدولی که با جدول دیگر در ارتباط است



en.reza
چهارشنبه 19 مهر 1391, 18:15 عصر
سلام
دوتا جدول دارم که با هم ریلیشن دارن
می خوام از یکی رکورد پاک کنم خطا می ده می گه فارن کی و...

چیکار کنم
چطوری کدشو بنویسم
واسه select و insert , update رو هم بگید اگه میشه
فووووووووووووووووووووووری ه
تنکس

danialafshari
چهارشنبه 19 مهر 1391, 18:52 عصر
یکم درباره ی جداولتون اطلاعات بدید

veniz2008
چهارشنبه 19 مهر 1391, 19:13 عصر
سلام. اون خطایی که اتفاق می افته منطقی و طبیعی هستش. فرض کنید جداول مشتری و خرید رو دارید و ارتباط بین این دو جدول رو برقرار کردید. مشتری با آی دی 1 میاد و کالایی رو خریداری میکنه. حالا شما میاید و قصد حذف مشتری رو از جدول مشتری دارید در اینصورت sql به شما پیغام خطای مربوط به کلید خارجی رو میده چون اگه اون مشتری رو حذف کنید عملا ارتیاط رو از بین میبرید در حالیکه مفهوم کلید خارجی برای ارتباط برقرار کردن بین جداول هستش. دو تا راه دارید :1. اول رکورد مورد نظر رو از جدول وابسته حذف کنید(در این مثال،جدول خرید میشه) و بعدش رکورد مورد نظرتون رو از جدول مبدا حذف کنید( جدول مبدا که کلید اصلی در اون هستش جدول مشتری میشه). این راه منطقی ترین روش هستش.
2: اون جایی که بین دو جدول ارتباط برقرار کردید یه گزینه ای هست به نام INSERT and update specefication که شامل دو گزینه delete rule و update rule هستش. در delete rule یک گزینه هست به نام cascade که اگر فعالش کنید sql خودش مدیریت حذف کردن ها رو انجام میده. یعنی وقتی شما از جدول خرید رکورد رو حذف کنی،خودش رکوردجدول مشتری رو هم حذف میکنه.
توصیه : پیشنهاد میکنم از روش اول استفاده کنید. هیچ کس جز خود شما نمیتونه تصمیم بگیره که کدوم اطلاعات مهمه و باید حفظ بشه و کدوم اطلاعات باید حذف بشن. پس خودتون مدیریت حذف کردن ها رو به عهده بگیرید.
موفق باشی دوست من.