mido_develper بتاريخ: 9 نوفمبر 2008 تقديم بلاغ مشاركة بتاريخ: 9 نوفمبر 2008 قمت بعمل هذا التريجر CREATE OR REPLACE TRIGGER check_salary BEFORE INSERT OR UPDATE OF salary, job_id ON employees FOR EACH ROW WHEN (NEW.job_id <> 'AD_PRES') DECLARE v_minsalary employees.salary%TYPE; v_maxsalary employees.salary%TYPE; BEGIN SELECT MIN(salary), MAX(salary) INTO v_minsalary, v_maxsalary FROM employees WHERE job_id = :NEW.job_id; IF :NEW.salary < v_minsalary OR :NEW.salary > v_maxsalary THEN RAISE_APPLICATION_ERROR(-20505,'Out of range'); END IF; END; / وبعدين عملت الكود ده UPDATE employees SET salary = 3400 WHERE last_name¬ = 'Stiles'; بس للاسف طلعتلي الerror دي SQL> UPDATE employees SET salary = 3400 WHERE last_name = 'Stiles'; UPDATE employees SET salary = 3400 WHERE last_name = 'Stiles' * ERROR at line 1: ORA-04091: table HR.EMPLOYEES is mutating, trigger/function may not see it ORA-06512: at "HR.CHECK_SALARY", line 5 ORA-04088: error during execution of trigger 'HR.CHECK_SALARY' ارجو المساعده وجزاكم الله كل خير اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Amgad بتاريخ: 9 نوفمبر 2008 تقديم بلاغ مشاركة بتاريخ: 9 نوفمبر 2008 يمكنك استخدام خاصية البحث بالمنتدى ... للبحث عن حل مشكلة ال MUTATINGمنها إضغط هنا : مشاركة سابقة بالمنتدى المقصود ب MUTATING TABLEانه عند عمل تريجر مثلا BEFORE UPDATE علي تابلاذا كنت تقوم بسيليكت من نفس اتابل الذي تعمل فيه الابديتهيطلع ايرور و قت التفيذان هذا التابل MUATATING و لا يمكن ان تعمل منه سيليكتاي انه يتغيرلذلك لا يمكن عمل اي سيليكت من نفس التابل اللي عليه التريجر فهى باختصار انك اذا انشات trigger وعايزة يعمل fire عندما تريد مثلا عمل insert ثم قمت بكتابة جملة dml فى ال trigger body فان هذا سيؤدى لظهور رسالة خطا mutating table اى ان هناك تداخل او عدم تساق حيث لا يمكن عمل insert فى جدول وعمل select فى نفس الجدول وفى نفس الوقت ORA-04091 table string.string is mutating, trigger/function may not see itCause: A trigger (or a user defined PL/SQL function that is referenced in thisstatement) attempted to look at (or modify) a table that was in the middle ofbeing modified by the statement which fired it.Action: Rewrite the trigger (or function) so it does not read that table. اليك هذا الرابط إضغط هنا Avoiding Mutating Tables اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Slamonty بتاريخ: 10 نوفمبر 2008 تقديم بلاغ مشاركة بتاريخ: 10 نوفمبر 2008 جزاك الله خيرا اخ امجد, فعلا رد وافي اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.