الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Featured Replies

بتاريخ:

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


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

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

بتاريخ:
  • كاتب الموضوع

يا اخوان وينكم.؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

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

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

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

بتاريخ:

الأخ العزيز trust_words

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

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

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

بتاريخ:
  • كاتب الموضوع

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

  • بعد 7 شهور...
بتاريخ:

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



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

AdNaN
O.C.P

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

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

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.