saudiprogrammer بتاريخ: 3 يونيو 2005 تقديم بلاغ مشاركة بتاريخ: 3 يونيو 2005 هذا هو TRIGGER create or replace TRIGGER DONATION_QUA AFTER INSERT ON DONATIONFOR EACH ROW declare new_id number; KIND_ID number; NEW_QUA number;BEGIN select DONATION_SEQ.CURRVAL into new_id from Dual; SELECT DONATION_KIND_NO INTO KIND_ID FROM DONATION WHERE DONATION_NO = new_id; SELECT QUANTITY INTO NEW_QUA FROM DONATION WHERE DONATION_NO = new_id; new_QUANTITY(KIND_ID, NEW_QUA);END;/ وهذا هو ERROR الي يحدث لحظة ال INSERT SQL> INSERT INTO DONATION VALUES(1,2,1,100,TO_DATE('03-NOV-1998', 'dd-MON-yyyy'));INSERT INTO DONATION VALUES(1,2,1,100,TO_DATE('03-NOV-1998', 'dd-MON-yyyy')) *ERROR at line 1:ORA-04091: table SCOTT.DONATION is mutating, trigger/function may not see itORA-06512: at "SCOTT.DONATION_QUA", line 7ORA-04088: error during execution of trigger 'SCOTT.DONATION_QUA' اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Amgad بتاريخ: 3 يونيو 2005 تقديم بلاغ مشاركة بتاريخ: 3 يونيو 2005 (معدل) السلام عليكم ورحمة الله وبركاته تم عرض موضوع ال mutating من قبل بالمنتدى راجع هذه الروابط http://www.araboug.org/ib/index.php?sho...283&hl=mutatinghttp://www.araboug.org/ib/index.php?sho...653&hl=mutating تم تعديل 3 يونيو 2005 بواسطة Amgad اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
saudiprogrammer بتاريخ: 3 يونيو 2005 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 3 يونيو 2005 شكرا لك يا اخ امجد على تجاوبك وهذا التعديل على TRIGGER ولكن لا فائدة create or replace TRIGGER DONATION_QUA AFTER INSERT ON DONATION FOR EACH ROW declare new_id number; KIND_ID number; NEW_QUA number; BEGIN select DONATION_SEQ.CURRVAL into new_id from Dual; SELECT DONATION_KIND_NO INTO KIND_ID FROM DONATION WHERE :NEW.DONATION_NO = new_id; SELECT QUANTITY INTO NEW_QUA FROM DONATION WHERE :NEW.DONATION_NO = new_id; new_QUANTITY(KIND_ID, NEW_QUA); END; / ولتوضح اكثر هذا TRIGGER لإنشاء SEQUENCE على نفس الجدول create or replace TRIGGER INSERT_DONATION_ID BEFORE INSERT ON DONATION FOR EACH ROW declare new_id number; BEGIN select DONATION_SEQ.NEXTVAL into new_id from Dual; :new.DONATION_NO := new_id; END; / اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Amgad بتاريخ: 4 يونيو 2005 تقديم بلاغ مشاركة بتاريخ: 4 يونيو 2005 السلام عليكم اولا : لا اعرف ما سبب تكوين ال TRIGGER INSERT_DONATION_ID فاكيد انك كونت الsequance من قبل واسمه DONATION_SEQالغى هذا التريجير ثانيا : عدل أمر ال insert الى SQL> INSERT INTO DONATION VALUES(DONATION_SEQ.NEXTVAL ,2,1,100,TO_DATE('03-NOV-1998', 'dd-MON-yyyy')); ثالثا : لماذا استخدمت امر select مرتين لنفس الجدول مع نفس الشرط ؟. اعتقد يمكنك دمجهما فى امر واحد فقط هذا اجتهاد منى ولعلة يأتي بنتيجة .. اخبرنا بالنتيجهوشرح اضافى للمطلوب بالظبط اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.