PDA

View Full Version : سوال: کدام گزینه مناسب تر است؟



milan2004
شنبه 28 فروردین 1395, 03:58 صبح
سلام ، در حذف یک رکورد پیام خطایی داده می شود مبنی بر انتخاب یک گزینه از گزینه های زیر در sqlserver بخش relationship و بخش InsertAndDeleteSpeification:
NoAction
Cascade
Set null
Set Default
کدام گزینه مناسب تر است؟ ممنون اگر پاسخی داده شود.

milan2004
شنبه 28 فروردین 1395, 09:11 صبح
خواهش میکنم اگر کسی درمورد این موضوع چیزی میداند به ما هم بگوید

bomb23
یک شنبه 29 فروردین 1395, 03:49 صبح
سلام ببینید شما الان یک Relation دارید سطری که قصد حذف آن را دارید در یک جدول دیگر به عنوان کلید خارجی است و وقتی حذف شود باید یک عملی طبق منطق برنامه شما برای برخورد با جدول دوم اتخاض شود. حالا از اون چهار موردی که شما نوشتید اولی که ممکن نیست چرا که با همین خطا مواجه خواید شد و پیش فرض روی آن قرار دارد.
Cascade:یعنی فرض کنید میخواهید یک نویسنده را حذف کنید اگر نویسنده مطالبی داشته باشد آن مطالب نیز حذف خواهد شد و به همین ترتیب اگر مطالب تصاویری داشته باشند حذف خواهند شد و... به صورت آبشاری حذف صورت میگیرد تا ارتباطات دچار مشکل نشوند.
Set null:در صورتی که برای کلید خارجی خود allow null در نظر گرفته باشید میتوانید از این مورد استفاده کنید.
Set Default: در صورتی که مقدار پیش فرض برای فیلد کلید خارجی در نظر گرفته باشید با حذف سطری که کلید اصلی است سطر جدول دوم کلید خارجی اش به مقدار ِdefault تغییر خواهد یافت.

notlikeothers
یک شنبه 29 فروردین 1395, 05:30 صبح
درود.من خودم همیشه تو ریلشن ها
Cascade رو انتخاب میکنم.
چون بعد حذف یک فیلد یهو میبینی ارور داری.با این کار همون طوری که دوستمون گفتن حذف ابشاری صورت میگیره دیگه خیالت راحته

milan2004
یک شنبه 29 فروردین 1395, 06:26 صبح
bomb23 (http://barnamenevis.org/member.php?245762-bomb23) آیا با حذف ابشاری این ایراد رو نمیشه گرفت که ممکن است اطلاعات با ارزشی نیز از بین برود؟من هم پس از از دست دادن اطلاعات مجبور به پرسش در این باره شدم .
در ضمن حضور افراد خبره و دلسوزی مثل شما در دنیای برنامه نویسی برای دیگران بسیار دلگرم کننده است ممنون .

bomb23
دوشنبه 30 فروردین 1395, 08:40 صبح
خیر هنگامی که از حالت آبشاری برای حذف رکورد استفاده کنید تمام اتصالات به رکورد مربوطه حذف خواهد شد. شما معمار برنامه خود هستید و باید تصمیم بگیرید از چه ساختاری میخواید استفاده کنید. برای موارد غیر مهم از cascade استفاده کنید ولی در هنگام حذف مواردی مثل کاربران به هیچ وجه از اون استفاده نکنید چرا که ممکنه تمام مثلا پست ها و ... نیز که وابسته به آن کاربر هست حذف بشه پس بهتره خودتون پیاده سازی حذف رو انجام بدید و یا کار راحتر اینه که با حالت Default کار کنید و مقدار Default رو هم set کنید تا خیالتون راحت باشه.