بتاريخ: 10 ديسمبر 200916 سنة comment_178799 اخواني عند تنفيذ هذا التريغر البسيط والتافه CREATE OR REPLACE TRIGGER status_terminated_date after UPDATE ON employees FOR EACH ROW BEGIN if :new.status = 2 then update employees set terminated_date =to_char(sysdate,'dd/mm/yyyy') where emp_id=:old.emp_id; end if; END; يشتغل تمام ولكن عند عمل تعديل على قيمة status =2 يعطيني الخطا التالي يعطيني الخطا التالي ORA-04091: table string.string is mutating, trigger/function may not see it Cause: A trigger (or a user defined plsql function that is referenced in this statement) attempted to look at (or modify) a table that was in the middle of being modified by the statement which fired it.شو الحل لانو جنني ومن الصبح وانا بلشان فيه تقديم بلاغ
بتاريخ: 10 ديسمبر 200916 سنة كاتب الموضوع comment_178807 اخواني طبعا هذا الخطأ يحدث عندما تريد ان تنفذ جمل dml اثناء التواجد في الجدول وهذا لا يجوز وبالتالي يجب التحايل بطرق اخرى على الموضووع انا قمت بتبديل الكود واشتغل تمام وهو كالتالي كي يستفيد الكل منه CREATE OR REPLACE TRIGGER status_terminated_date before UPDATE ON employees FOR EACH ROW BEGIN if :new.status = 2 then :new.terminated_date:=sysdate; end if; END; تقديم بلاغ
بتاريخ: 10 ديسمبر 200916 سنة comment_178878 الأخ / ماهر شكرا لك .. على ايضاح مشكلة ال mutatingاليك مشاركات سابقة بالمنتدى عن هذا الموضوع وملفات مرفقه عن طرق تجنب ال mutating إضغط هنا : Problem In Trigger ... mutating تقديم بلاغ
بتاريخ: 11 ديسمبر 200916 سنة كاتب الموضوع comment_178916 الأخ / ماهر شكرا لك .. على ايضاح مشكلة ال mutatingاليك مشاركات سابقة بالمنتدى عن هذا الموضوع وملفات مرفقه عن طرق تجنب ال mutating إضغط هنا : Problem In Trigger ... mutating مشكور اخوي امجد ومنكم نستفيد تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.