elbanna2008 بتاريخ: 15 مايو 2009 تقديم بلاغ مشاركة بتاريخ: 15 مايو 2009 عندى جدول بهذا الشكل CREATE TABLE "BFI"."SALES_GOOD" ( "GOODS_ID" NUMBER(5,0) NOT NULL ENABLE, "C_ID" NUMBER(14,0) NOT NULL ENABLE, "COST" NUMBER(5,0) NOT NULL ENABLE, "GIVEN" NUMBER(5,0) NOT NULL ENABLE, "PREMIUMS" NUMBER(4,0), "NO_PREM" NUMBER(3,0), "S_DATE" DATE NOT NULL ENABLE, "QTY" NUMBER(7,2), "SALES_NO" NUMBER(5,0), "REMAIN" NUMBER(10,3), CONSTRAINT "P_K_SAL_GOODS" PRIMARY KEY ("C_ID", "SALES_NO") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "BFI" ENABLE, CONSTRAINT "F_K_SAL_GOODS_CID" FOREIGN KEY ("C_ID") REFERENCES "BFI"."CUSTMER" ("C_ID") ENABLE, CONSTRAINT "F_K_SAL_GOODS_GOODS_ID" FOREIGN KEY ("GOODS_ID") REFERENCES "BFI"."GOODS" ("GOODS_ID") ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "BFI"; وجدول اخر CREATE TABLE "BFI"."INSTALLMENT" ( "C_ID" NUMBER(14,0) NOT NULL ENABLE, "GOODS_ID" NUMBER(5,0) NOT NULL ENABLE, "CURENT_DATE" DATE DEFAULT SYSDATE NOT NULL ENABLE, "BILL_DATE" DATE NOT NULL ENABLE, "ALL_REMAIN" NUMBER(10,3), "REMAIN" NUMBER(10,3), "PREMIUM_NO" NUMBER(10,3), "PRMIUM_COST" NUMBER(4,0), CONSTRAINT "P_K_INSTALL" PRIMARY KEY ("C_ID", "PREMIUM_NO") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "BFI" ENABLE, CONSTRAINT "F_K_INSTALL_CID" FOREIGN KEY ("C_ID") REFERENCES "BFI"."CUSTMER" ("C_ID") ENABLE, CONSTRAINT "F_K_INSTALL_GOODS_ID" FOREIGN KEY ("GOODS_ID") REFERENCES "BFI"."GOODS" ("GOODS_ID") ENABLE ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "BFI"; اريد عمل تريجر بمجرد ادخال البيانات فى الجدول الاول يدخل هذه البيانات فى الجدول الثانىبمثل هذا الشكل create or replace TRIGGER "t_installment " AFTER INSERT OR UPDATE ON SALES_GOOD FOR EACH ROW DECLARE V DATE; N NUMBER (14); begin SELECT ROUND(LAST_DAY(S_DATE),'MONTH') INTO V FROM SALES_GOOD WHERE C_ID =10000001; SELECT NVL(MAX(PREMIUM_NO),0)+1 INTO N FROM installment; if inserting then insert into INSTALLMENT values(:new.C_id,:new.GOODS_ID,SYSDATE,V,NEW.REMAIN,NULL,N,NEW.PREMIUMS); END IF; END; عند عمل هذا الترجر بيعملى ايرور ممكن حد يساعدنى لحل هذه المشكلهوجزاكم الله خيرا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mustafagamiel بتاريخ: 15 مايو 2009 تقديم بلاغ مشاركة بتاريخ: 15 مايو 2009 أخطاء بسيطة نسيان بعض الاشياء لاحظ create or replace TRIGGER "t_installment " AFTER INSERT OR UPDATE ON SALES_GOOD FOR EACH ROW begin DECLARE V DATE; N NUMBER (14); begin SELECT ROUND(LAST_DAY(S_DATE),'MONTH') INTO V FROM SALES_GOOD WHERE C_ID =10000001; SELECT NVL(MAX(PREMIUM_NO),0)+1 INTO N FROM installment; if inserting then insert into INSTALLMENT values(:new.C_id,:new.GOODS_ID,SYSDATE,V,:NEW.REMAIN,NULL,N,:NEW.PREMIUMS); END IF; END; end; اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
elbanna2008 بتاريخ: 15 مايو 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 15 مايو 2009 جزاك الله خيرا يا اخى على اهتمامكشيئ اخر اريد معرفتهفى هذه العمليه انا اريد احتساب اول كمبياله وغالبا تكون بعد شهر فالكود ده لحساب اول شهر بعد الشراءفمش هقوله يدخلى عميل عميل انا مش عارف اعملها انه بمجرد ما احفظ سلعه عميل يقوم بحساب تريخ اول كمبياله لهذا العميل وتسجيله فى الجدول الجديدبدل ما اكتب انا مش عارف اوضح اوى فارجو منك الصبر اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mustafagamiel بتاريخ: 15 مايو 2009 تقديم بلاغ مشاركة بتاريخ: 15 مايو 2009 لم أفهم منك أوي هل المطلوب إنك تضيف شهر على تاريخ حفظ أول سلعة للعميل اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
elbanna2008 بتاريخ: 15 مايو 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 15 مايو 2009 جزاك الله خيرا على اهتمامكمش عايز احدد ال C_ID برقم معين الC_ID هوا رقم العميلاريده ادخال التاريخ للعميل الذى تم تسجيله اي عميل تم تسجيله اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mustafagamiel بتاريخ: 15 مايو 2009 تقديم بلاغ مشاركة بتاريخ: 15 مايو 2009 إذن شيل الرقم واكتب بعد جملة ال where الاتي WHERE C_ID =:new.C_id; أتمنى أن يكون هذا قصدك اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
elbanna2008 بتاريخ: 15 مايو 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 15 مايو 2009 فعلا هذا قصدى بالفعل وقد جربتها كثيرا كدا بنفس الطريقه ولم تعمل الا بعد ما كتبتها انتشكرا جدا على تعبك معاياولاكن لما بدخل بيانات عميل جديد واحفظها لا يتم حفظها بسبب ORA-04091: table BFI.SALES_GOOD is mutating, trigger/function may not see itORA-06512: at "BFI.t_installment ", line 6ORA-04088: error during execution of trigger 'BFI.t_installment ' اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mustafagamiel بتاريخ: 15 مايو 2009 تقديم بلاغ مشاركة بتاريخ: 15 مايو 2009 أتمنى أن ترسل الجداول ويكون مكتوبين بطريقة عادية دون الزيادات الكثيرة التي بها كي نستطيع بإذن الله معرفة الخطأ بصراحة أنا تايه في الجداول هتتعب شوية وتكتبهم عادي خالص وهحاول مساعدتك بإذن الله اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
elbanna2008 بتاريخ: 16 مايو 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 16 مايو 2009 هتلاقى الجداول فى المرفقات TABLES.txt اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mustafagamiel بتاريخ: 17 مايو 2009 تقديم بلاغ مشاركة بتاريخ: 17 مايو 2009 أخي الكريم جرب كده التريجر بهذا الشكل وتأكد من النتائج جيدا وقولي ربما يكون هناك خطأ create or replace TRIGGER "t_installment" aFTER INSERT OR UPDATE ON SALES_GOOD FOR EACH ROW declare V DATE; N INSTALLMENT.PREMIUM_NO%type; begin SELECT NVL(MAX(PREMIUM_NO),0)+1 INTO N FROM installment; if (inserting) then insert into INSTALLMENT values(:new.C_id,:new.GOODS_ID,SYSDATE,ROUND(LAST_DAY(:new.S_DATE),'MONTH'),:NEW.REMAIN,NULL,n,:NEW.PREMIUMS); END IF; END; اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
elbanna2008 بتاريخ: 18 مايو 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 18 مايو 2009 الف شكر ليك يا اخى ربنا يبارك فى علمك اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.