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

نام تاپیک: ایجاد ارتباط یک تیبل با خودش

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1386
    پست
    58

    Tick ایجاد ارتباط یک تیبل با خودش

    یک تیبل حاوی ID-ParentID-Name دارم که یک چارت (tree) را در خود نگهداری می کند. می خواهم در قسمت Diagram در sql بین جدول با خودش ارتباط برقرار کنم بطوری که ID کلید اصلی و ParentId کلید خارجی باشد . به این دلیل که هر نود که حذف می شود اگر ID اش در قسمت ParentID دیگری باشد(ID حذف شده پدر نود دیگری بوده باشد) ، نود فرزند هم حذف شود(Cascade delete ) بطوری که نودی نماند که پدرش حذف شده باشد.
    ولی در قسمت دیاگرام اجازه برقرار کردن این ارتباط را نمی دهد و ارور زیر را می دهد. چه کار باید بکنم؟

    Chart' table
    - Unable to create relationship 'FK_Chart_Chart'.
    [FONT='Times New Roman','serif']ODBC error: [Microsoft][ODBC SQL Server Driver][SQL Server]ALTER TABLE statement conflicted with COLUMN FOREIGN KEY SAME TABLE constraint 'FK_Chart_Chart'. The conflict occurred in database 'Personnel6', table 'Chart', column 'NodID[/FONT]

  2. #2
    سلام

    متاسفانه cascade delete برای same table قابل استفاده نیست. تریگرهای عادی هم پس از حذف اجرا میشوند و نمیتوان مثلا در تریگر delete ابتدا فرزندان را پاک کرد. سه راه حل قابل تصور است:

    1- از یک stored procedure برای حذف استفاده کنی که درآن قبل از حذف parent، فرزندان را حذف کنی
    2- یک view بنویسی که دارای تریگر delete باشد. در آن تریگر ابتدا فرزندان را حذف کنی
    3- یک تریگر حذف به صورت instead of روی همان جدول بنویسی

    ارادت

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

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