ورود

View Full Version : حذف یک رکورد و تمامی زیر مجموعه های آن



حمیدرضاصادقیان
دوشنبه 03 دی 1386, 16:53 عصر
سلام دوستان.من میخوام از یک جدول یک رکورد رو حذف کنم و تمامی زیر مجموعه های آن هم حذف بشه.برای اینکار قبلا به صورت تک تک اون رکورد رو تو جدولهای مختلف پیدا میکردم و حذف میکردم.حالا بنا به دلایلی از trigger دارم استفاده میکنم.
ایا در Trigger امکانش هست رکوردهای زیر مجموعه از تمامی جداول حذف شود؟فرضا توی 4 جدول هست از هر 4 تا حذف بشه.
البته من اینکارو کردم ولی با 3 دستور Delete به این صورت


Delete Po from deleted
as d join p_oriz1 as po on d.code=po.code
Delete Po from deleted
as d join p_oriz2 as po on d.code=po.code

حالا این روش من درسته؟البته جواب داد.ولی در سرعت مشکلی ایجاد نخواهد کرد.
ایا روش بهتری وجود داره؟

MShirzadi
دوشنبه 03 دی 1386, 17:14 عصر
چرا از Relatioship استفاده نمی کنی ؟؟؟

حمیدرضاصادقیان
دوشنبه 03 دی 1386, 20:55 عصر
ممنون.ولی یکبار تست کردم جواب نداد.اخه همه فیلدهای من کلید نداره.مثلا فیلد سند در جدول فروش من اصلا کلیدی نداره.بعدش ایا امکانش هست برای یک فیلد چند Relation ایجاد کرد؟
مثلا فیلد سند من در فروش باید در دو جدول دیگه تست بشه که اگر بود اونها رو هم حذف کنه.

SYNDROME
دوشنبه 03 دی 1386, 21:59 عصر
بعدش ایا امکانش هست برای یک فیلد چند Relation ایجاد کرد؟
مثلا فیلد سند من در فروش باید در دو جدول دیگه تست بشه که اگر بود اونها رو هم حذف کنه.
می توانی با استفاده از تریگر ها شرطها را چک کنید.
موفق باشید

MShirzadi
دوشنبه 03 دی 1386, 23:05 عصر
اگر نخوای از Relationship استفاده کنی بهترین راه استفاده از همان trigger هست. و فکر نکنم که کسی نظر دیگری داشته باشه

حمیدرضاصادقیان
سه شنبه 04 دی 1386, 07:18 صبح
میخوام استفاده کنم ولی آیا با این مواردی که بیان کردم امکان ایجاد relation هست؟

hdv212
سه شنبه 04 دی 1386, 10:12 صبح
بله، یک فیلد Primary در یک جدول، میتونه در چندین جدول به صورت ForeignKey بیاد.
در ضمن علاوه بر Trigger از Transaction هم برای حذف رکورد در جدوال دیگه هم میتونی استفاده کنی.

حمیدرضاصادقیان
سه شنبه 04 دی 1386, 13:23 عصر
آخه الان مشکل اینه که در این جدول یک فیلد PK هست و فیلد دیگه ای که در دوجدول دیگه داره جستجو میشه اصلا کلیدی نداره

hdv212
سه شنبه 04 دی 1386, 16:17 عصر
خب اگه از Trigger استفاده کردی، نیازی نیست که اون جداول کلیدی داشته باشه، فقط در قسمت where، مقدار pk ای که میخوای از جداول دیگه پاک کنی رو بده.

SYNDROME
سه شنبه 04 دی 1386, 18:01 عصر
آخه الان مشکل اینه که در این جدول یک فیلد PK هست و فیلد دیگه ای که در دوجدول دیگه داره جستجو میشه اصلا کلیدی نداره
در ایجاد Relation نیازی نیست در جدول دوم کلید داشته باشید .
همون کلیدی که در جدول اول دارید مشکل را حل می کند.
موفق باشید

حمیدرضاصادقیان
سه شنبه 04 دی 1386, 19:25 عصر
ممنون.ولی در جدول اصلیم دو فیلد دارم که یکی ش کلید هست و دومی هیچ کلیدی نداره.