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

السؤال

نشر

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

اذا كان هناك جدول للموضوعات باسم  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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...