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

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

عندي مشكلة مع هذا TRIGGER يا ليت تساعدوني


3 رد (ردود) على هذا الموضوع

#1 saudiprogrammer

saudiprogrammer

    عضو

  • الأعضــاء
  • 26 مشاركة

تاريخ المشاركة 03 June 2005 - 09:33 PM

هذا هو 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 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 it
ORA-06512: at "SCOTT.DONATION_QUA", line 7
ORA-04088: error during execution of trigger 'SCOTT.DONATION_QUA'



#2 Amgad

Amgad

    مشرف عام ومشرف قسم تحليل النظم

  • الفريق الإداري
  • 4,558 مشاركة
  • الاسم الأول:امجد
  • اسم العائلة:حلمي
  • البـلـد: Country Flag
  • المنصب الحالي:Business Systems Analyst at al Fanar Co. Riyadh KSA

تاريخ المشاركة 03 June 2005 - 11:52 PM

السلام عليكم ورحمة الله وبركاته
تم عرض موضوع ال mutating من قبل بالمنتدى
راجع هذه الروابط
http://www.araboug.o...283&hl=mutating

http://www.araboug.o...653&hl=mutating

تم التعديل بواسطة Amgad, 03 June 2005 - 11:53 PM.

لا إله إلا الله الحليم الكريم
لا اله إلا الله العلى العظيم
لا اله إلا الله رب السماوات السبع و رب العرش العظيم
‏اللهم ارزقني قبل الموت توبة وعند الموت شهادة وبعد الموت جنة
اللهم ارزقني حسن الخاتمة
اللهم هون علينا سكرات الموت ... ونور علينا قبورنا
اللهم ارزقني الموت وأنا ساجد لك يا ارحم الراحمين
اللهم ثبتني عند سؤال الملكين
اللهم اجعل قبري روضة من رياض الجنة ولا تجعله حفرة من حفر النار
اللهم اني اعوذ بك من فتن الدنيا
اللهم ارحم ابائنا وامهاتنا واغفر لهما وتجاوز عن سيئاتهما وادخلهم فسيح جناتك ... والحقنا بهما يا رب العالمين
اللهم ارحم موتانا وموتى المسلمين واشفي مرضانا ومرضى المسلمين
اللهم اغفر للمسلمين والمسلمات والمؤمنين والمؤمنات الأحياء منهم والأموات
وبارك اللهم على سيدنا محمد صلى الله عليه وسلم
اللهم آمين ... اللهم آمين ... اللهم آمين


....


#3 saudiprogrammer

saudiprogrammer

    عضو

  • الأعضــاء
  • 26 مشاركة

تاريخ المشاركة 04 June 2005 - 02:03 AM

شكرا لك يا اخ امجد على تجاوبك وهذا التعديل على 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;
/


#4 Amgad

Amgad

    مشرف عام ومشرف قسم تحليل النظم

  • الفريق الإداري
  • 4,558 مشاركة
  • الاسم الأول:امجد
  • اسم العائلة:حلمي
  • البـلـد: Country Flag
  • المنصب الحالي:Business Systems Analyst at al Fanar Co. Riyadh KSA

تاريخ المشاركة 05 June 2005 - 12:39 AM

السلام عليكم
اولا : لا اعرف ما سبب تكوين ال 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 مرتين لنفس الجدول مع نفس الشرط ؟. اعتقد يمكنك دمجهما فى امر واحد فقط

هذا اجتهاد منى ولعلة يأتي بنتيجة .. اخبرنا بالنتيجه
وشرح اضافى للمطلوب بالظبط

لا إله إلا الله الحليم الكريم
لا اله إلا الله العلى العظيم
لا اله إلا الله رب السماوات السبع و رب العرش العظيم
‏اللهم ارزقني قبل الموت توبة وعند الموت شهادة وبعد الموت جنة
اللهم ارزقني حسن الخاتمة
اللهم هون علينا سكرات الموت ... ونور علينا قبورنا
اللهم ارزقني الموت وأنا ساجد لك يا ارحم الراحمين
اللهم ثبتني عند سؤال الملكين
اللهم اجعل قبري روضة من رياض الجنة ولا تجعله حفرة من حفر النار
اللهم اني اعوذ بك من فتن الدنيا
اللهم ارحم ابائنا وامهاتنا واغفر لهما وتجاوز عن سيئاتهما وادخلهم فسيح جناتك ... والحقنا بهما يا رب العالمين
اللهم ارحم موتانا وموتى المسلمين واشفي مرضانا ومرضى المسلمين
اللهم اغفر للمسلمين والمسلمات والمؤمنين والمؤمنات الأحياء منهم والأموات
وبارك اللهم على سيدنا محمد صلى الله عليه وسلم
اللهم آمين ... اللهم آمين ... اللهم آمين


....