الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

حذف سجل من قاعدة بيانات مع حذف الأبناء ?

مغلق
بدأه abazied في 29 نوفمبر 2005 · 2 رد · 819 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لدي قاعدة بيانات اوراكل وعند حذف سجل من جدول تظهر رسالة مفادها انه لدي حقول مرتبطة بهذا السجل من جداول اخرى

ما أريده هو كيف استطيع حذف هذا السجل مع جميع الحقول المرتبطة به

انا استخدم تعليمة Delete

هل هناك اعدادت في عنصر AdoQuery ؟

ام هل يوجد تعليمة اخرى لحذف الجميع ؟؟

#2

هناك مفهوم في قاعدة البيانات اسمه Integrity و معناه سلامة البيانات

اي الحفاظ على قوة و تماسك قاعدة البيانات

عند الربط بين جدولين اذا قمت بتفعيل خيار Integrity سوف يصبح لديك الميزات التالية

1- لا يمكن حذف اب له ابناء في جدول اخر

2- لا يمكن اضافة ابن دون تحديد او اضافة اب له

3- لا يمكن تغير االحقل الذي يربط بين الأب و الأبن في الأب

لحل المشكلة هو انك تريد حذف الأب ثم يقوم بحذف الأبناء

قم بحذف جميع الأبناء اولا ثم قم بحذف الأب

استخدم AdoCommand و قم بوصله مع قاعدة البيانات

فلو فرضنا ان الجدول الأب اسمه parent الذي يحتوي على الحقل ID

وله جدول ابن اسمه Son و يحتوي على الحقل Parent_FK للربط مع الأب

لحذف الأبناء قم بستخدام ما يلي

adocommand.commandtext:= 'delete from son where parent_FK = 1'
adocmmand.execute

و لحذف الأب

adocommand.commandtext:= 'delete from parent where id = 1
adocommand.execute

هناك خيار في SQL Server لا اعلم اذا كان موجود في Oracle و هو عند الربط بين جدولين

هناك خيار اسمه

cascade delete related recoreds

cascade update related fields

الاول مسؤول عن حذف سجلات الأبناء في حال حذف الأب

و الثاني مسؤول عن تحديث حقل الربط في جدول الأبناء في حال تغييره في حقل الأب

تم تعديل هذه المشاركة بواسطة waeldalol في 30 نوفمبر 2005 في 09:51

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#3

شكرا اخ waeldalol

اظن ان هناك خيارا كهذا في الاوراكل ولكن لا اعرف كيف سأطرحه في منتدى الاوراكل

شكرا مرة اخرى

هذا الموضوع مغلق.

مواضيع مشابهة