11-12-12, 11:52 PM
المشكلة عندك و انا ملاحظ ان ناس كتير مش بتذكر النقطة دى المشكلة عندك فى انشاء العلاقة
لازمها امر بسيط بيتعمل يدوى ازاى انا معرفش بيتعمل بالكود دى انا اعرفها .
الحل هوا عبارة عن امر لازم يتعمل تخليه يأجل عملية التأكد بالعلاقة بين الجدول لحين عملية الحفظ النهائية . وهقولك على الامر بالكود فى نهاية الكلام.
الحل الثانى ان انت تنشئ العلاقات بتاعت الجداول عن طريق البرنامج وليس الداتا
وعند التعديل فى جدول الاصناف لاسم صنف ما هتضيف كود التعديل فى جدول المخازن لاسم الصنف اللى انت عدلته فى جدول الاصناف وانا انصحك بعدم جعل الاسماء مفاتيح اساسية واجنبية فى الجداول وانصحك باستخدام الرقم بتاع كل صنف هوا اللى يكون مفتاح اساسى واجنبى فى الجداول وبالتالى مش هيأثر عليك فى عملية التعديل انما فى عملية الحذف مش هيوافق انك تحفظ صنف وهوا مسجل فى جدول المخازن الا لو انت حضرتك لغيت العلاقة ما بين الجدولين .
نيجى بقى للامر اللى قولتلك عليه فى الاول وده هدية ومحدش هيقلهولك . الامر بالكود هيكون كالتالى بس هذا الامر لو كانت العلاقة على الداتا وليست من داخل البرنامج نفسه .
constraint item_name_fk foreign key (item_name) references item(item_name)DEFERRABLE INITIALLY DEFERRED)
الشرح : 1 / constraint item_name_fk ده معناه ان ده مفتاح اجنبى اسمه item_name
2/ foreign key (item_name) ده اسم الحقل الىل هيتعمل عليه العلاقة
3/ references item(item_name) ده معناه ان الحقل فى جدول المخازن الىل اتعمل عليه مفتاح اجنبى الجدول الاساسى الىل المفتاح الاجنبى بيستمد منه العلاقة جدول الاصناف واسم الحقل .
4/ DEFERRABLE INITIALLY DEFERRED) وهى دى الهدية امر ديفرابول وده معناه انه ياجل عملية التاكد من العلاقة بين الجدولين لحين الانتهاء من عملية الحفظ النهائية للبيانات .
بصراحة انا مجربتهاش مع الفيجوال بيسك لان انا بستعمل العلاقات من داخل البرنامج
لكن انا جربتها مع الاوراكل .
لو حبيت الكود كامل للتعديل يدوى قولى وانا اجيبهولك وهوا سهل استخدام امر alter table
لازمها امر بسيط بيتعمل يدوى ازاى انا معرفش بيتعمل بالكود دى انا اعرفها .
الحل هوا عبارة عن امر لازم يتعمل تخليه يأجل عملية التأكد بالعلاقة بين الجدول لحين عملية الحفظ النهائية . وهقولك على الامر بالكود فى نهاية الكلام.
الحل الثانى ان انت تنشئ العلاقات بتاعت الجداول عن طريق البرنامج وليس الداتا
وعند التعديل فى جدول الاصناف لاسم صنف ما هتضيف كود التعديل فى جدول المخازن لاسم الصنف اللى انت عدلته فى جدول الاصناف وانا انصحك بعدم جعل الاسماء مفاتيح اساسية واجنبية فى الجداول وانصحك باستخدام الرقم بتاع كل صنف هوا اللى يكون مفتاح اساسى واجنبى فى الجداول وبالتالى مش هيأثر عليك فى عملية التعديل انما فى عملية الحذف مش هيوافق انك تحفظ صنف وهوا مسجل فى جدول المخازن الا لو انت حضرتك لغيت العلاقة ما بين الجدولين .
نيجى بقى للامر اللى قولتلك عليه فى الاول وده هدية ومحدش هيقلهولك . الامر بالكود هيكون كالتالى بس هذا الامر لو كانت العلاقة على الداتا وليست من داخل البرنامج نفسه .
constraint item_name_fk foreign key (item_name) references item(item_name)DEFERRABLE INITIALLY DEFERRED)
الشرح : 1 / constraint item_name_fk ده معناه ان ده مفتاح اجنبى اسمه item_name
2/ foreign key (item_name) ده اسم الحقل الىل هيتعمل عليه العلاقة
3/ references item(item_name) ده معناه ان الحقل فى جدول المخازن الىل اتعمل عليه مفتاح اجنبى الجدول الاساسى الىل المفتاح الاجنبى بيستمد منه العلاقة جدول الاصناف واسم الحقل .
4/ DEFERRABLE INITIALLY DEFERRED) وهى دى الهدية امر ديفرابول وده معناه انه ياجل عملية التاكد من العلاقة بين الجدولين لحين الانتهاء من عملية الحفظ النهائية للبيانات .
بصراحة انا مجربتهاش مع الفيجوال بيسك لان انا بستعمل العلاقات من داخل البرنامج
لكن انا جربتها مع الاوراكل .
لو حبيت الكود كامل للتعديل يدوى قولى وانا اجيبهولك وهوا سهل استخدام امر alter table
