إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

سؤال عن الـ database triggers ؟؟


6 رد (ردود) على هذا الموضوع

#1 trust_words

trust_words

    عضو مميز

  • الأعضــاء
  • 730 مشاركة

تاريخ المشاركة 01 October 2004 - 12:21 PM

بسم الله الرحمن الرحيم


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

..
كلنا نعرف ان قيمة العمود رقم القسم في جدول الموظفين تتبع لقيم عمود رقم القسم في جدول الاقسام..وهنا جاء استخدام التريجر في حالة اضافة قيمة على جدول الموظفين غير معرفة في جدول الاقسام..فان التريجر في هذه الحالة يقوم باضافة رقم القسم على جدول الاقسام حتى تستكمل عملية التحديث او الادخال بالقيمة الجديدة على جدول الموظفين دون مشاكل...حتى الان تمام,والكتاب ذكر هذا المثال البسيط للدلالة على احدى فوائد التريجرات...المشكلة هنا ..او السؤال الذي اريده انه في الكتاب استخدم التوقيت after
وفعلا كان التنفيذ صحيحا...ولكنني حاولت تغيير التوقيت الى before
فاعطاني نفس النتيجة !! وعمل التحديث دون ادنى مشكلة..طيب لماذا؟؟ وما هو الفرق في التنفيذ بين التوقيتين؟ ومتى نستخدم كل منهما؟؟
في المثال السابق المنطق يقول ان وظيفة التريجر يجب ان تتم (قبل) عملية التحديث..ولكن الكتاب استخدم التوقيت(بعد)..ولم يحدث اي فرق يذكر في النتائج؟!!!
في حين انني توقعت رسالة خطأ او اعتراض..لأن التريجر توقيته (بعد) الحدث ! يعني الحدث لما يتنفذ التريجر مش لازم يكون ادخل قيمة رقم القسم على جدول الاقسام بعد...ومما يتطلب بطبيعة الحال رسالة اعتراض عشان the reference constraint
ارجو من احد الاخوة التوضيح وجزاكم الله كل خير
المصدر :
Oracle university:pl/sql 9-33
وقل رب زدني علما...


ومانيل المطالب بالتمني . . . . ولـكن تــؤخــذ الدنـيا غـلابـــا !

#2 trust_words

trust_words

    عضو مميز

  • الأعضــاء
  • 730 مشاركة

تاريخ المشاركة 03 October 2004 - 06:17 PM

يا اخوان وينكم.؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
وقل رب زدني علما...


ومانيل المطالب بالتمني . . . . ولـكن تــؤخــذ الدنـيا غـلابـــا !

#3 ألماس

ألماس

    مشترك

  • الأعضــاء
  • 161 مشاركة

تاريخ المشاركة 03 October 2004 - 08:12 PM

  استخدام التريجر في حالة اضافة قيمة على جدول الموظفين غير معرفة في جدول الاقسام..فان التريجر في هذه الحالة يقوم باضافة رقم القسم على جدول الاقسام حتى تستكمل عملية التحديث او الادخال بالقيمة الجديدة على جدول الموظفين دون مشاكل...

ياريت توضح اكثر عند اللي عليه خط
وعشان نفهم الموضووع اكثر اخي الكريم
يعني هل انت تكتب رقم قسم جديد من ادخال للموظف الجديد
في جدول الموظفين ويكون رقم هذا القسم غير موجود في العمود
رقم القسم الموجود في جدول الاقسام ...؟
ارجو التوضيح اكثر عشان يمكن اقدر اساعدك
صورة

#4 trust_words

trust_words

    عضو مميز

  • الأعضــاء
  • 730 مشاركة

تاريخ المشاركة 04 October 2004 - 07:32 PM

اجل تماما يا اخ الماس...وبالطبع الذي يسبب المشكلة هو وجود
Reference Constraint-parent(deptno in dept) ,child(deptno in emp) .A
اي كما قلت انت..
واشكرك لاهتمامك اخي
وقل رب زدني علما...


ومانيل المطالب بالتمني . . . . ولـكن تــؤخــذ الدنـيا غـلابـــا !

#5 ألماس

ألماس

    مشترك

  • الأعضــاء
  • 161 مشاركة

تاريخ المشاركة 07 October 2004 - 08:26 PM

الأخ العزيز trust_words

لقد حاولت في مثال مثله ووجدت نفس المشكلة التي

واجهتك لذلك لم اجد الحل النهائي ، فارجو من الاخوة

من لديه معرفة بذلك ان يبلغنا مشكوراً
صورة

#6 trust_words

trust_words

    عضو مميز

  • الأعضــاء
  • 730 مشاركة

تاريخ المشاركة 08 October 2004 - 12:32 AM

انا فعلا أقدر لك قولك هذا...فحقا "من قال لا ادري..فقد افتى"...وما اقل قائلها..ومااكثر الاخرين..ولو بدون علم..
اجر نيّتك اخ الماس انشاء الله انه وصل..
اشكرك مرة اخرى..واطلب ممن يدري من بقية الاخوة ان يجبنا..فقد صرنا اثنان وليس واحدا...!
وقل رب زدني علما...


ومانيل المطالب بالتمني . . . . ولـكن تــؤخــذ الدنـيا غـلابـــا !

#7 AdNaN

AdNaN

    عضو

  • الأعضــاء
  • 29 مشاركة
  • الاسم الأول:Adnan
  • اسم العائلة:BaHatheq
  • البـلـد: Country Flag

تاريخ المشاركة 15 May 2005 - 10:12 AM

بسم الله الرحمن الرحيم



السلام عليكم أخtrust_words
في الحقيقة كلامك مضبوط 100% وانا دورت على المثال في الكتاب من خلال رقم الصفحه والشابتر الي انت وضعتهم ولكن لم أجد المثال.
عموما...
لاحظ ياخي انه في أوراكل يجوز لك تدخل أي قيمة تبغاها في أي حقل تريدة حتى لو ما حققت الشروط و Constraints
بس بمجرد انك تعمل حفظ Commit عندها سيتم البدء في تدقيق الشروط و Constraints
لذلك في هذه الحالة هنا بعد ما أدخلنا رقم قسم غير موجود أصلا في جدول الموظفين أنطلق هذا التريجر مباشرة وقام بأضافة هذا الرقم الجديد في جدول الأقسام
لاحظ أننا لو قمنا بعمل حفظ الأن فسيقوم أوراكل بفحص هل رقم القسم في جدول الموظفين له وجود في جدول الأقسام, الأجابة بالطبع ستكون نعم
لذلك فسوف تتم هذه العملية بنجاح.
أعتقد أنك قد تتسائل الان:
اذا ما هي الفائدة المرجوة من Timing(Before,After) ؟
الجواب:
في بعض الأحيان انت ترغب بالقيام بعمليات حسابية قبل أضافة سجل ما في جدول معين.
مثلا في جدول الموظفين أنت ترغب بتعديل قيمة الراتب مثلا ليصبح ضعفي الراتب الحالي
ولكن تريد ان تفصح هل كادر ومرتبة هذا الموظف يسمحان بمثل هذا الراتب لهذه المرتبة والكادر
لذلك تقوم بفحص مجموعه من الشروط قبل حفظ هذا التعديل فان نجحت الشروط تم التعديل و الا لم يتم
هنا يكون الفرق شاسع جدا بين After و Before
أتمنى أن أكون قد وفقت في شرحي

AdNaN
O.C.P