اذهب إلى المحتوى
  • 0

حذف كل تعليقات موضوع من القاعدة في حالة حذف الموضوع

Hamada Ahmed

السؤال

السلام عليكم ورحمة الله وبركاته

اذا كان هناك جدول للموضوعات باسم  news    به حقل    id    تتسلسل من خلاله المواضيع

وهناك جدول اخر للتعليقات باسم comment  به حقل  news_id  

رقم الموضوع  id   هو نفسه  news_id  في التعليقات

ماذا يمكن فعله لحذف كل التعليقات المتعلقة بموضوع معين عندما يتم حذف الموضوع نفسة من القاعدة اي ان id  ليس له وجود في الجدول 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1
بتاريخ 7 دقائق مضت قال Hamada Ahmed:

قمت بعمل ذلك لكن لم تنجح


CREATE TABLE comments (
`id` INT( 9 ) NOT NULL AUTO_INCREMENT ,
`comment_text` Text NOT NULL ,
`subject_id` INT( 9 ) NOT NULL ,
`commentor_id` varchar(50) NOT NULL,
`comment_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`comment_status` int(1) NOT NULL,
PRIMARY KEY ( `id` ),
FOREIGN KEY (subject_id) REFERENCES news (id) ON DELETE CASCADE
) ENGINE = MYISAM

 

المشكلة هي في المحرك MYISAM فهو لا يدعم مفاتيح الارتباط، حاولي استخدام InnoDB فهو يدعم شروط المفاتيح على الجداول ليصبح انشاء الجدول كالتالي 

CREATE TABLE comments (
...
FOREIGN KEY (`subject_id`) REFERENCES news (`id`) ON DELETE CASCADE
) ENGINE = InnoDB

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يمكن عند تعريف الربط بين جدول التعليقات وجدول الموضوعات تحديد معاملة التعليقات المرتبطة بموضوع تم حذفه عن طريق تحديد ON DELETE بالقيمة CASCADE

CREATE TABLE comment (  
  ...
  FOREIGN KEY (news_id) REFERENCES news (id) ON DELETE CASCADE  
);  

بعدها عند حذف موضوع من جدول news سيتم حذف كل التعليقات المتعلقة من جدول comment به تلقائيا

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 24 دقائق مضت قال Hassan Hedr:

يمكن عند تعريف الربط بين جدول التعليقات وجدول الموضوعات تحديد معاملة التعليقات المرتبطة بموضوع تم حذفه عن طريق تحديد ON DELETE بالقيمة CASCADE


CREATE TABLE comment (  
  ...
  FOREIGN KEY (news_id) REFERENCES news (id) ON DELETE CASCADE  
);  

بعدها عند حذف موضوع من جدول news سيتم حذف كل التعليقات المتعلقة من جدول comment به تلقائيا

قمت بعمل ذلك لكن لم تنجح

CREATE TABLE comments (
`id` INT( 9 ) NOT NULL AUTO_INCREMENT ,
`comment_text` Text NOT NULL ,
`subject_id` INT( 9 ) NOT NULL ,
`commentor_id` varchar(50) NOT NULL,
`comment_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`comment_status` int(1) NOT NULL,
PRIMARY KEY ( `id` ),
FOREIGN KEY (subject_id) REFERENCES news (id) ON DELETE CASCADE
) ENGINE = MYISAM

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...