نمایش نتایج 1 تا 5 از 5

نام تاپیک: مشکل در حذف رکوردی که با یک فیلد دیگر Relation دارد

  1. #1

    مشکل در حذف رکوردی که با یک فیلد دیگر Relation دارد

    با سلام.

    برای چنین ساختاری نمی توانم دستور DELETE بنویسم .


    The DELETE statement conflicted with the SAME TABLE REFERENCE constraint "FK_Menu_Menu". The conflict occurred in database "mySite", table "dbo.Menu", column 'ParentId'.
    یعنی Record هایی که Child دارن Delete نمی شوند .
    فکر می کنم یک راهش این باشه که اول یک SELECT بزنیم و تمامی Record هایی که ParentId شون همونیه که می خواهیم DEl کنیم رو پیدا کنیم و اول اونا رو پاک کنیم بعد بریم سراغ Record ریشه .

    اما به نظر بهینه نمیاد.

    به نظرتون راه حلش چیه !؟
    ضمنا" کلا" چه راهکاری رو برای پیاده سازی منوهایی که ساختار درختی دارند پیشنهاد می کنید؟!

  2. #2

    نقل قول: مشکل در حذف رکوردی که با یک فیلد دیگر Relation دارد

    با سلام

    یعنی Record هایی که Child دارن Delete نمی شوند .
    خب نباید هم پاک بشوند . اتفاقاً خوب است که نتوان آن ها را پاک کرد.

    اما به نظر بهینه نمیاد.
    این مورد بهینه است یا اینکه رکوردهای بی پدری در جدول وجود داشته باشند که به هیچ دردی نمیخورن ؟

    به هر حال شما می توانید این Relation را حذف کنید که در صورت حذف به مشکل برنخورید .

    ولی بهتر این است که رابطه وجود داشته باشد .
    زیرا کاربر مجبور است خودش مسئولیت حذف رکوردهای فرزند رو بر عهده بگیره .

    و یا برای راحت تر کردن کاربر می توانید هنگام حذف یک والد دیگر از او بخواهید تا در صورت نیاز این فرزندها را حذف نکنید و به یک والد دیگر انتقال دهید .

    بستگی به سیستم شما دارد که بخواهید چگونه با کاربر تعامل کنید و اینکه رکوردهایی که دارای والد نیستند نگهداری بشوند یا خیر .

  3. #3

    نقل قول: مشکل در حذف رکوردی که با یک فیلد دیگر Relation دارد

    هميشه برام سوال بوده كه پراپرتي هاي Relation رو چطور استفاده كنم . مثلا :DeleteRule چهار مقدار NoAction , Cascade , SetNull , SetDefault داره .
    يا پراپرتي Enforce Forign Key Constraint دو مقدار Yes , No ميگيره . اين پراپرتي ها اينجا به كارمون نمياد ؟
    اگه اينجا كاربرد نداره پس كاربردشون كجاست ؟

  4. #4

    نقل قول: مشکل در حذف رکوردی که با یک فیلد دیگر Relation دارد

    نقل قول نوشته شده توسط Lastphoenix مشاهده تاپیک
    هميشه برام سوال بوده كه پراپرتي هاي Relation رو چطور استفاده كنم . مثلا :DeleteRule چهار مقدار NoAction , Cascade , SetNull , SetDefault داره .
    يا پراپرتي Enforce Forign Key Constraint دو مقدار Yes , No ميگيره . اين پراپرتي ها اينجا به كارمون نمياد ؟
    اگه اينجا كاربرد نداره پس كاربردشون كجاست ؟
    متاسفانه زمانی که PK و FK یک Relation از یک جدول باشد نمی توان از این گزینه استفاده کرد. ( یا حداقل من نتونستم ) و الا با Cascade گذاشتن Property مشکل من حل میشد.

  5. #5

    نقل قول: مشکل در حذف رکوردی که با یک فیلد دیگر Relation دارد

    اتفاقاً خوب است که نتوان آن ها را پاک کرد.
    منظور من چیزی شبیه Cascade در Relation میان دو جدول بود که ظاهرا" باید دستی اینکار را انجام دهم.
    ممنون از پاسختون.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •