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

كيف اقدر اعمل تريجر على الجدول لتعديل بيانات فية


moon14sun14

Recommended Posts

مرحبا



عندي سؤال محيرني

عندي جدول لبيانات الموظفين ومن ضمن هذه البيانات يوجد حقل لمجموع الاجازات المتوفرة لكل موظف

اريد اضيف تريجر لهذا الجدول بحيث انه يعدل قيمة حقل مجموع الاجازات المتوفرة في 1/9 من كل سنة


كيييييييييف اقدر اطبق هالفكرة


ياريت حد يساعدني

رابط هذا التعليق
شارك

هو المفروض أصلاً مفيش حقل خاص بعدد الأجازات المتبقية للموظف ، المفروض أن يكون هناك جدولاً يتابع عملية الأجازات خلال السنة ، يعني أي أجازة يطلبها الموظف يتم إدراج سجل علي أساسها ، مثل ( بداية الأجازة ، نهاية الأجازة ، المسئول ، السبب ، نوع الأجازة ، .... الي آخرة ) .

أما موضوع رصيد الموظف من الأجازات المتبقية خلال السنة مثلاً فدة بيتحسب مش بيتسجل !!!!

يعني مثلاً ، بيكون فية جدول آخر بيدرج فية قيود الأجازات ، وبيتحسب علي أساس سنوات الخدمة ، يعني مثلاً لو كان الموظف لم يتم 6 شهور من تعيينة مبيكنش له أجازات ، ومن 6 شهور الي 3 سنوات بيكون له 21 يوم للأجازة الرئيسية ، أما لو كان عدي 5 سنوات فبيكون له 25 يوم ، ................. وهكذا ( دة مجرد مثال بس ).

من هذا الجدول بحدد سنوات خدمة الموظف ، وبعدين أجلب قيمة الأجازات الممنوحة للموظف ، بعد كدة بجلب عدد الأجازات المستهلكة خلال السنة من جدول متابعة الأجازات السنوية وبطرحها من قيمة الأجازة الممنوحة ، وبعدها بطلع رصيد الأجازة الخاصة بالموظف خلال السنة المحددة.

عموماً كل شيء له إحتياجاتة وله إستخداماتة ، بس هفرض أنك عايزة تعملي حقل للرصيد علشان السهولة ، نفرض أن لدينا جدول خاص بالموظفين Emp ، وهذا الجدول به حقل لرصيد الأجازات تحت إسم Emp_BALANCE ، وهفرض أن هناك Function بيجلب رصيد الموظف من الأجازات يدعي Fun_Balance ، أنظري كيف يمكن تكوين الزناد :

CREATE OR REPLACE TRIGGER TRG_BEFORE_EMP BEFORE INSERT OR UPDATE ON EMP
FOR EACH ROW
DECLARE
  ID_BALANCE	NUMBER(20,3);
BEGIN
  IF(UPDATING)THEN
   ID_BALANCE := FUN_BALANCE(:NEW.EMP_NO);
   IF(ID_BALANCE <> :NEW.EMP_BALANCE)THEN
	   :NEW.EMP_BALANCE := ID_BALANCE;
   END IF;
  END IF;
END;
/





بالتوفيق

رابط هذا التعليق
شارك

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

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

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

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

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

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