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

بتاريخ:

السلام عليكم و رحمة الله و بركاته
اريد ان اعرف اين الخطا في الكود التالي

CREATE OR REPLACE TRIGGER "EMPLOYEE_T1"


AFTER
update of "DNO" on "EMPLOYEE"
for each row
WHEN (new.dno=1) begin
IF UPDATING AND :OLD.Dno != :NEW.Dno THEN
update employee set salary=salary +(salary * .1) where ssn=:NEW.ssn;
END IF;
end;

المطلوب من الكود السابق ان يضيف 10% علي راتب الموظف الذي يتم تحديث حقل القسم له الي رقم 1

علما ان

dno رقم القسم و ssn رقم الموظف

و جزاكم الله خيرا

بتاريخ:

السلام عليكم
جرب هذا الترجر بعد التعديل:



Create Or Replace Trigger Employee_T1
After Update Of Deptno On Emp
For Each Row
Begin
If (:New.Deptno = 1) Then
 Update Emp 
    Set Sal = Sal + (Sal * 0.1) 
  Where Empno =:Old.Empno;
End If;
End;



قم بتعديله حسب الحقول لديك..

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

السلام عليكم
جرب هذا الترجر بعد التعديل:



Create Or Replace Trigger Employee_T1
After Update Of Deptno On Emp
For Each Row
Begin
If (:New.Deptno = 1) Then
 Update Emp
 Set Sal = Sal + (Sal * 0.1)
  Where Empno =:Old.Empno;
End If;
End;



قم بتعديله حسب الحقول لديك..



للاسف لم ينفذ و ظهرت الرسالة التالية
error ORA-04091: table TEST.EMPLOYEE is mutating, trigger/function may not see it ORA-06512: at "TEST.EMPLOYEE_T1", line 3 ORA-04088: error during execution of trigger 'TEST.EMPLOYEE_T1'


و هذا هو الكود الذي كتبته بعد التعديل

CREATE OR REPLACE TRIGGER "EMPLOYEE_T1"
AFTER update of "DNO" on "EMPLOYEE"
for each row
Begin
If (:New.Dno = 1) Then update employee set salary=salary +(salary * .1)
where ssn=:old.ssn;
END IF;
end;

تم تعديل بواسطة Reda_Inst

بتاريخ:

السلام عليكم
جرب الترجر بعد التعديل:


Create Or Replace Trigger "EMPLOYEE_T1"
After Update Of "DNO" On "EMPLOYEE"
For Each Row
Declare
Pragma Autonomous_Transaction;
Begin
If (:New.Dno = 1) Then 
 Update Employee 
    Set Salary = Salary + (Salary * .1)
  Where Ssn=:Old.Ssn;
  Commit;
End If;
End;

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

و عليكم السلام استاذ احمد
ضهرت الرسالة التالية

error ORA-00060: deadlock detected while waiting for resource ORA-06512: at "TEST.EMPLOYEE_T1", line 5 ORA-04088: error during execution of trigger 'TEST.EMPLOYEE_T1'

بتاريخ:

الأخ الكريم : أتوقع المشكلة في زمن القادح لإن الزمن بعد after لن يتحسس القادح التغيير على الجدول لذلك أختر الزمن before
ويصبح الكود على الجدول employees : (لاداعي لتعليمة update )

CREATE OR REPLACE TRIGGER e2

BEFORE UPDATE

OF DEPARTMENT_ID

ON HR.E2

REFERENCING NEW AS NEW OLD AS OLD

FOR EACH ROW

Begin

If (:New.department_id = 1) Then

:new.salary := :old.salary *1.1 ;

End If;

End;

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

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

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

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

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

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.