PDA

View Full Version : سوال: حذف فرزندان یک والد در سی شارپ



php_love
پنج شنبه 16 بهمن 1393, 09:59 صبح
سلام دوستان

چطور می تونم فرزندان یه والد رو حذف کنم ؟؟؟؟
فرضا من شماره آیدیه یه والدی رو دارم می خوام به کاربر هشدار بدم که اگه والد رو حذف کنه تمام فرزندان اون والد نیز از دیتابیس حذف میشن
می خواستم بدونم برای حذف کردن فرزندان باید چی کار کنم ؟؟

آیا باید با خود سی شارپ تک تک بچه ها رو پیدا کنم و حذف کنم یا اینکه تو خود دستور sql میشه فرزندان رو پیدا کرد و اونا رو حذف کرد ؟؟

اگه نمونه مثالی دارید ممنون میشم راهنمائی کنید .....

Mahmoud Zaad
پنج شنبه 16 بهمن 1393, 11:04 صبح
با سلام
خب شما مگه آیدی والد رو توی رکوردهای فرزند ذخیره نمی کنید؟ یه کوئری delete بنویسید که بررسی کنه اگه آیدی رکوردی شبیه آیدی والد مورد نظر بود، حذفش کنه.

php_love
پنج شنبه 16 بهمن 1393, 12:51 عصر
با سلام
خب شما مگه آیدی والد رو توی رکوردهای فرزند ذخیره نمی کنید؟ یه کوئری delete بنویسید که بررسی کنه اگه آیدی رکوردی شبیه آیدی والد مورد نظر بود، حذفش کنه.

آیدیه والد رو برای فرزندان همون والد ذخیره می کنم . سئوالم برای ریشه های پائین تر والد بود (فرزندان فرزندش) ؟؟

plus
پنج شنبه 16 بهمن 1393, 23:35 عصر
شما اگه فیلدی که id والد در جدول فرزند رو به صورت کلید خارجی با تنظیم Update: Cascade تعریف کرده باشید، با حذف والد فرزندها هم حذف میشن. اگه برای فرزندهای فرزند هم این کار رو انجام بدین، با حذف والد، همه فرزندها و فرزندهای فرزندها در صورت امکان حذف میشن.

php_love
جمعه 17 بهمن 1393, 12:12 عصر
شما اگه فیلدی که id والد در جدول فرزند رو به صورت کلید خارجی با تنظیم Update: Cascade تعریف کرده باشید، با حذف والد فرزندها هم حذف میشن. اگه برای فرزندهای فرزند هم این کار رو انجام بدین، با حذف والد، همه فرزندها و فرزندهای فرزندها در صورت امکان حذف میشن.

بنده از یک جدول برای ذخیره کردن تمام والدها و فرزندان استفاده می کنم , عکس زیر نمائی از Tableی که ساختم هست
http://barnamenevis.org/attachment.php?attachmentid=128009&d=1422519046
در این جدول فیلد Num (یکتا) و فیلد Parent مشخص کننده والد و فرزند هستش

میشه در مورد تنظیم Update و Cascade توضیح بدید من هیچ شناختی نسبت بهش ندارم ؟؟؟
چطوری میشه وقتی داری Tableات رو می سازی این دو رو به فیلد نسبت داد و تنظیم کرد ؟؟

plus
جمعه 17 بهمن 1393, 23:12 عصر
اگه از Script برای ساختن Table استفاده میکنید، میتونید از عبارت ON DELETE CASCADE برای کلید خارجی مورد نظر استفاده کنید. https://msdn.microsoft.com/en-us/library/ms174979.aspx اگه از محیط SQL Server Manager Studio استفاده میکنید، در بخش ویرایش جدول، در قسمت Relationships بعد از ایجاد کلید خارجی، در زیر قسمت Insert and Update Specification مربوط به کلید خارجی ای که ایجاد کردین، مقدار Delete Rule رو برابر Cascade بگذارین.