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