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

نام تاپیک: مشکل با cascade Delete در sql

  1. #1
    کاربر دائمی آواتار MNosouhi
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    اصفهان
    پست
    883

    مشکل با cascade Delete در sql

    وقتی cascade Delete رو تیک زده باشم ، اگر رکوردی از جدول اصلی حذف بشه ، تمام رکورد های وابسته به اون رکورد ، در جداول دیگه هم حذف میشه اگر هم cascade Delete تیک نخورده باشه و وابستگیی بین رکورد جاری و وجداول دیگه وجود داشته باشه اصلا اجازه حذف نمیده . حالا میخام اگر رکوردی از جدول جاری حذف شد که با رکوردهایی در جدول های دیگه رابطه داره ، کلید خارجی رکوردهای جداول دیگه مقدار null بگیرند.
    یه مثال میزنم ، یه جدول داریم با نام Table1 که حاوی پست های سازمانی هستش (مثل معاونت ، مدیریت و ...) و یه فیلد داره به اسم Pid که فیلد کلید است . یه جدول دیگه هم داریم که اسمش Table2 هستش و مشخصات افراد مثل نام ، نام خانوادگی و پست سازمانی اشخاص رو نگهداری میکنه . Pid در Table2 به عنوان کلید خارجی استفاده میشه . حالا اگر یک رکورد Table1 حذف بشه منطقی نیست که Sql server بیاد و از Table2 تعدادی رکورد حذف کنه(یعنی به خاطر اینکه یه پست سازمانی حذف شده ، مشخصات همه افرادی را که دارای اون پست سازمانی بودن رو حذف کنه) ، بلکه منطقی اینه که Pid در Table2 رو Null کنه تا بعدا کاربر دوباره مقداردهی کنه(پست جدیدی رو انتخاب کنه
    sql میتونه خودش این رو مدیریت کنه و یا اینکه ما خودمون باید مدیریت کنیم؟

  2. #2
    اگه از SQL Server 2005 استفاده میکنی ، میتونی با امکانات جدیدی که داره این مشکل رو حل کنی.
    Foreign Key Constraint در قسمت Cascade ، دو تا ویژگی جدید داره به نام SET NULL و SET DEFAULT :
    SET NULL در جدول فرزند : اگر رکوردی در جدول پدر حذف بشه، مقدار NULL رو جایگزین میکنه، که در این صورت این فیلد (کلید خارجی) را باید به صورت Allow Null ایجاد کنی.

    SET DEFAULT‌ در جدول فرزند : قبل از استفاده باید یه Default Constraint برای اون فیلد تعریف کنی،
    و بعد از این ویژگی استفاده کنی، که در این صورت مقدار تعریفی در این Constraint بعد از حذف رکورد در جدول پدر ،جایگزین فیلد مربوطه در جدول فرزند میشه.

  3. #3
    کاربر دائمی آواتار MNosouhi
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    اصفهان
    پست
    883
    از sqlserver 2000 استفاده می کنم.
    حالا باید چیکار کنم؟

تاپیک های مشابه

  1. cascade update و cascade delete
    نوشته شده توسط shaparak در بخش MySQL
    پاسخ: 7
    آخرین پست: شنبه 22 دی 1386, 08:38 صبح
  2. On Update Cascade
    نوشته شده توسط hamed_bostan در بخش SQL Server
    پاسخ: 3
    آخرین پست: سه شنبه 22 آبان 1386, 23:25 عصر
  3. cascade update و cascade delete
    نوشته شده توسط adabyron در بخش SQL Server
    پاسخ: 2
    آخرین پست: پنج شنبه 31 خرداد 1386, 11:13 صبح
  4. مشکل با cascade Delete
    نوشته شده توسط MNosouhi در بخش SQL Server
    پاسخ: 13
    آخرین پست: یک شنبه 28 آبان 1385, 22:29 عصر

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

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