حذف ركورد با دستور LINQ

0 امتیاز
158 بازدید
سوال شده بهمن 14, 1394 توسط aaamir829  

با سلام خدمت همه دوستان

بنده چهار جدول sql دارم كه بصورت شماتيك عكس آنها را دوستان ميتونند ملاحظه كنند.سوال بنده اين هست كه من يك گريد ويو دارم كه تمامي كاربران هتل را نمايش مي دهد.و مدير سيستم زماني يك كاربر را حذف مي كند بايد تمامي اطلاعات مربوط به آن از قبيل مشخصات هتل در جدول هتل ، عكس هتل در جدول عكس ها ، اطلاعات اتاقها در جدول اتاقها نيز به تبع آن حذف شود.لطفا دستوري را كه اين عمليات را با هم انجام بدهد را بيان كنيد ممنون.لطفا با LINQ باشد

http://uupload.ir/files/b48q_sql.bmp

 

این مطلب را به اشتراک بگذارید

1 پاسخ

0 امتیاز
پاسخ داده شده بهمن 14, 1394 توسط ASHKARAN  

با عرض سلام

برای انجام این کار شما نیاز به دستور خاصی برای حذف رکورد ها ندارید

در زمان ساخت جدول می توانید دستورات را طوری بنویسید که به هنگام حذف کلید اصلی از یک جدول تمامی کلیدهای خارجی تابعه نیز حذف شوند !

به کد زیر توجه بفرمایید:

CREATE TABLE mytable (
  uid integer,
  did integer,
  PRIMARY KEY (uid),
  FOREIGN KEY (uid) references parenttable(id) ON DELETE CASCADE,
  FOREIGN KEY (did) references parenttable(id) ON DELETE CASCADE
)

در جدولی که با استفاده از کد بالا ساخته می شود هرگاه  id  در جدول parenttable حذف شود سطرهایی که دارای کلید خارجی id هستند نیز حذف خواهند شد

دارای دیدگاه بهمن 15, 1394 توسط aaamir829  
با تشکر از پاسخ خوب شما.مسله اینجاست که اگر کاربر بخواهد یک رکورد از جدولی که دارای کلید خارجی است و به عبارتی  این کلید خارجی ،کلید اصلی یک جدول باشد(طبق جدوالی که بنده دادم) را حذف کند با خطای سیستم مواجه شده و سیستم از حذف آن جلوگیری می کند.راه حل چیست؟

راه حل حذف یک رکورد و به تبع آن رکوردهای مربوطه و مسله دوم حذف رکوردهای هر جدول به تنهایی
دارای دیدگاه بهمن 15, 1394 توسط ASHKARAN  

فرمایش شما کاملا صحیحه !

به دلیل وابستگی هایی که جداول شما به هم داره کار کمی سخت تر میشه !

پیشنهاد بنده در درجه اول اینه که پایگاه داده رو بر حسب نیاز های برنامتون طوری طراحی بفرمایید که این وابستگی ها کمتر بوده و از کد بالا بتونید استفاده کنید چراکه نیاز به کار بیشتری نبوده و خود DBMS همه امور رو مدیریت می کنه !

در درجه دوم اگر به همین روش ادامه بدیم مجبور به حذف رکوردها از جداول میشیم !

به عنوان مثال :

DELETE FROM roomstable WHERE hotel_id IN 
  (
    SELECT hotel_id FROM hotel_table WHERE user_id = DELETED_USER_ID
  );

این روش رو هم امتحان فرموده و نتایج رو اعلام بفرمایید 

979 سوال

819 پاسخ

1,329 دیدگاه

1,274 کاربر

متاسفانه نیستم

این مطلب را به اشتراک بگذارید

ali.ashkaran@gmail
ما .....
  • سعی بر پاسخگویی به سوالات دیگران داریم.
  • به سوال و یا نظر دیگران احترام می گذاریم .
  • این وبسایت را به دیگران معرفی می کنیم.
  • همواره صمیمیت و ادب را رعایت می کنیم.
  • به سوالمان برچسب های مرتبط اضافه می کنیم.
  • در حین طرح سوال فرد خاصی را مخاطب قرار نمی دهیم .
...