نوشته شده توسط
emad4000
با سلام به همه دوستان
من توی یکی از برنامه هام، از روش حذف منطقی (Logical Delete or Soft Delete) استفاده می کنم
بالطبع برای بروزرسانی داده ها هم از بروزرسانی منطقی استفاده می کنم
ولی مشکلی که برام پیش میاد توی Cascade کردن اطلاعات تغییر یافته است.
مثلاً در جدول Person شخصی دارم با شماره 1
شماره این شخص در جدول قراردادها به صورت کلید خارجی استفاده شده، یعنی مثلاً قراردادی برای این شخص (که شماره اش 1 هست) ثبت شده.
حالا من اگر اطلاعات این شخص رو بخوام تغییر بدم، مثلاً فامیلش عوض بشه، اول میام فیلد isDeleted رکورد قبلی شخص رو True می کنم، بعد میام رکوردی در جدول Person می سازم که دقیقا یه کپی از رکورد قبلیش هست، فقط فامیلش فرق می کنه. از اونجایی که شماره شخص کلید اصلی جدول هست، شماره اش هم عوض میشه و مثلاً میشه 2
اینجاست که مشکل بوجود میاد. حالا دیگه اون قرارداد که برای فرد شماره 1 ثبت شده بود دیگه معتبر نیست
در واقع باید شماره شخص در این جدول هم Cascade بشه و بشه 2
برای این کار ایده هایی مثل جدا کردن کلید اصلی در جدول دوم یا نوشتن روال خودکار Cascade دارم. ولی اول می خوام بدونم آیا روش استانداردی برای این مشکل وجود داره یا نه؟