PDA

View Full Version : حذف رکورد از جدول پدر



m.webgard
پنج شنبه 03 بهمن 1392, 22:34 عصر
سلام. وقت بخیر
من میخوام با استفاده از دستورات SQL از جدول پدر رکوردی رو حذف کنم
دستور Delete رو هم درون تراکنش قرار دادم
اگه رکورد مورد نظر فرزند نداشته باشه که خب حذف میشه، اما اگر فرزند داشت خطا میده و چون درون تراکنش قرار داره هیچ عکس العملی انجام نمیشه.
من میخوام اگر فرزند داشت بتونم به کاربر پیغام بدم که اول فرزندان رو حذف کنه، حالا از کجا متوجه بشم که فرزند داره یا نداره؟
بنظرم با Error Number بشه همچین کاری کرد، اما نمیدونم چجوری؟
دوستان هر راهی به ذهنشون میرسه لطفا بفرمایید که استفاده کنم.... ممنون از لطفتون:لبخندساده:



درضمن، چون هر جدول ممکنه با جداول زیادی در ارتباط باشه، نمیتونم تعداد رکوردهای فرزند رو در هر جدول بررسی کنم تا ببینم فرزند داره یا نه، به نظرم کار معقولی نیست

حمیدرضاصادقیان
پنج شنبه 03 بهمن 1392, 22:49 عصر
سلام.
این رابطه رو در یک جدول پیاده سازی کردید یا به صورت Master-Detail می باشد؟؟
اگر به صورت Master-/detail می باشد میتوانید با استفاده از Relation ها و Cascade کردن Delete به راحتی با حذف رکورد پدر رکوردهای زیرمجموعه اونو حذف کنید.اگر میخواهید حذف نکنید میتونید Cascade Delete رو به صورت Default بذارید و هنگام حذف رکورد پدر خود SQL Server بهتون اخطار میده که میتونید اونو Customize کنید و به کاربر خطای مناسب رو نمایش بدید.

m.webgard
جمعه 04 بهمن 1392, 01:53 صبح
سلام.
این رابطه رو در یک جدول پیاده سازی کردید یا به صورت Master-Detail می باشد؟؟
اگر به صورت Master-/detail می باشد میتوانید با استفاده از Relation ها و Cascade کردن Delete به راحتی با حذف رکورد پدر رکوردهای زیرمجموعه اونو حذف کنید.اگر میخواهید حذف نکنید میتونید Cascade Delete رو به صورت Default بذارید و هنگام حذف رکورد پدر خود SQL Server بهتون اخطار میده که میتونید اونو Customize کنید و به کاربر خطای مناسب رو نمایش بدید.

ممنون که پاسخ دادی. دوست عزیز من قسمت Cascade Delete رو روی Default تنظیم کردم، چون نمیخوام با حذف پدر رکوردهای فرزند حذف بشه، در واقع اصلا نمیخوام خود پدر هم حذف بشه، فقط میخوام اگر پدر، فرزندی داشت بتونم موقع حذف به کاربر پیغام بدم، لطفا راهنمایی کنید که چطور این کار انجام بشه؟ ممنونم

حمیدرضاصادقیان
جمعه 04 بهمن 1392, 03:00 صبح
خوب وقتی شما روی default بذاری و هنگامی که رکورد پدر حذف بشه که فرزندی داره خود SQL Server به شما خطا میده و Application نیز این خطا رو میبینه.کافیه در یک Try..Catch اونوو Customize کنید.
برای تست هم میتونید یک رکورد در چدول پدر و یک رکورد در جدول فرزند اضافه کنید بعد رکورد پدر رو حذف کنید تا خطاش رو ببینید.

m.webgard
جمعه 04 بهمن 1392, 22:11 عصر
خوب وقتی شما روی default بذاری و هنگامی که رکورد پدر حذف بشه که فرزندی داره خود SQL Server به شما خطا میده و Application نیز این خطا رو میبینه.کافیه در یک Try..Catch اونوو Customize کنید.
برای تست هم میتونید یک رکورد در چدول پدر و یک رکورد در جدول فرزند اضافه کنید بعد رکورد پدر رو حذف کنید تا خطاش رو ببینید.

ممنونم. تست میکنم اگر مشکلی بود مجدد مزاحمت میشم