الانتقال إلى المحتوى
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.

مشكلة في Trigger

Featured Replies

بتاريخ:

 

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


create or replace trigger staff_his_update
after update on staff
begin
insert into staff_history (staff_his_id , his_staff_grade , his_staff_group , his_staff_vanguard , his_staff_vanguard_grade , his_staff_registry , his_staff_id, his_staff_update_date )
values (sraff_his_id_seq.nextval , staff.staff_grade.old , staff.staff_group.old , staff.staff_vanguard.old , staff.staff_vanguard_grade.old, staff.staff_registry.old , staff.staff_id.old , sysdate)
where staff.staff_id = staff.staff_id.old ;
end;

 

تم تعديل بواسطة Ahmad.Hasan

بتاريخ:

بغض النظر عن تركيبة الجداول لكن

اولا عدل السطر قبل الاخير الى

 

where staff_id = :old.staff_id

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

هو فعلا مكنش شايف المتغير بتاع ال old

بس لما حطيت " : " و فهمة قالي انة مينفعش استخدم المتغيرات " old / new " في trigger علي مستوي الجدول

لو حد عندة حال او حتي يقولي اعمل الفكرة دي ازاي ... و الفكرة عبارة عن انا عاوز اي تغير في بيانات الموظف يتسجل في جدول تاريح الموظف ... ممكن حد يساعدني

  • بعد 2 أسابيع...
بتاريخ:

بص يا كبير

لازم علشان تستخدم old لازم يكون التريجر من النوع for each row تضاف هذه الجمله قبل begin

ثانبا تستخدم هكذا    old.staff_grade:   بدون كتابة اسم الجدول لأنه مذكور فى التريجر

بتاريخ:

أهلا بك أخي ،

أولا حاول تغيير الحدث من بعد إلى قبل 

after update on staff  = before update on staff

ثانيا :

اكتب إسم الحقل مسبوقا بـ new:  لتخزين القيم الجديدة، أما في حالة أردت تخزين القيمة السابقة استخدم old:

ولكم الأفضل دائما إستخدام new:

أنت تقوم بعمل جدول لحفظ التغيرات الحاصلة على الموظفين ، وفي هذه الحالة عند تسجيل أي موظف سيتم تسجيله في الجدول الأساسي و أيا الجدول الإحتياطي (History Table - Log Table )  وعند أي تغيير سيتم التغيير في الدو الأساسي مع إدخال سجل جديد في الجدول الإحتياطي.

 

 

insert into staff_history (staff_his_id , his_staff_grade , his_staff_group , his_staff_vanguard , his_staff_vanguard_grade , his_staff_registry , his_staff_id, his_staff_update_date )
values (sraff_his_id_seq.nextval :new.staff.staff_grade.old , :new.staff.staff_group.old , :new.staff.staff_vanguard.old , :new.staff.staff_vanguard_grade.old, :new.staff.staff_registry.old , :new. staff.staff_id.old , sysdate)

أرجو أن أكون قد وفقت في شرح الفكرة.

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

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

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

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

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

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.