دو جدول رابطه يك به چند دارند.براي حذف كردن اگه آي دي جدول يك چند بار درجدول 2 باشد و لي تنها خواسته باشيم يكي از ركوردها را حذف كنيم چيكار بايد بكنيم.
دو جدول رابطه يك به چند دارند.براي حذف كردن اگه آي دي جدول يك چند بار درجدول 2 باشد و لي تنها خواسته باشيم يكي از ركوردها را حذف كنيم چيكار بايد بكنيم.
خب وقتي شما دستور بدي مثلا آي دي 1 رو پاك كن اون تمام آي دي هاي يك را پاك ميكند
ميتوني از فيلد ديگري براي شرط گذاشتن براي پاك كردن استفاده كني
بقيه فيلدها هم در جدول يك مثل آي دي هستند آخه جدول يك تنها اطلاعات شخصي هست.
شما میخواین اطلاعات از کدوم جدول پاک بشه؟ جدول 1 (جدول با کلید اصلی) یا جدول2 (جدول با کلید خارجی)
اگه از جدول 1 میخواین حذف کنید، باید Delete در ریلیشن رو در حالت Cascade قرار داده باشید، یا خودتان ابتدا همه رکوردهای جدول 2 که مرتبط با رکورد جدول1 که میخواین حذفش کنید؛ رو جذف کنید. در غیر این صورت خطا میده
اگه از جدول2 میخواین حذف کنید، شما توی جدول2 هم باید یک کلید اصلی داشته باشین که در این حالت باید ترکیبی از فیلدهای خود جدول2 و کلیدهای خارجیش باشه. در شرط حذف هم همه این فیلدهایی که بطور ترکیبی باهم کلید اصلی جدول2 رو ایجاد میکنند رو باهم and کنید
من از جدول 1 و 2 يك كوئري ساختم حالا اگه دستور بدم از جدول 1 حذف كنه تمام ركوردهايي كه به اون آي دي وصل هستند حذف ميشه.
باز اگه بگم از جدول 2 حذف بشه اگه آن ركورد فقط يه بار ذخيره شده باشد در جدول 1 اطلاعات آن باقي مي ماند.
میخوای از جدول1 هم پاک بشه؟باز اگه بگم از جدول 2 حذف بشه اگه آن ركورد فقط يه بار ذخيره شده باشد در جدول 1 اطلاعات آن باقي مي ماند.
اگه از جدول اصلي پاك كني فكر كنم از جداول فرزند هم پاك بشه
اگه از جدول دو حذف بشه و ديگه نيازي به اون در جدول 1 نباشه خوب بايد اون هم پاك بشه و اگه در ركوردهاي ديگر نياز بود پاك نشه
یه storedprocedure تعریف کن. اول تعداد رو بشمار، از یکی بیشتر بود از جدول2 حذف کن. در غیر این صورت از جدول 1 حذف کن که هر دوتاشون حذف شن
موفق باشی