بتاريخ: 15 مايو 200916 سنة comment_156875 عندى جدول بهذا الشكل 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; عند عمل هذا الترجر بيعملى ايرور ممكن حد يساعدنى لحل هذه المشكلهوجزاكم الله خيرا تقديم بلاغ
بتاريخ: 15 مايو 200916 سنة comment_156883 أخطاء بسيطة نسيان بعض الاشياء لاحظ 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; تقديم بلاغ
بتاريخ: 15 مايو 200916 سنة كاتب الموضوع comment_156947 جزاك الله خيرا يا اخى على اهتمامكشيئ اخر اريد معرفتهفى هذه العمليه انا اريد احتساب اول كمبياله وغالبا تكون بعد شهر فالكود ده لحساب اول شهر بعد الشراءفمش هقوله يدخلى عميل عميل انا مش عارف اعملها انه بمجرد ما احفظ سلعه عميل يقوم بحساب تريخ اول كمبياله لهذا العميل وتسجيله فى الجدول الجديدبدل ما اكتب انا مش عارف اوضح اوى فارجو منك الصبر تقديم بلاغ
بتاريخ: 15 مايو 200916 سنة comment_156949 لم أفهم منك أوي هل المطلوب إنك تضيف شهر على تاريخ حفظ أول سلعة للعميل تقديم بلاغ
بتاريخ: 15 مايو 200916 سنة كاتب الموضوع comment_156953 جزاك الله خيرا على اهتمامكمش عايز احدد ال C_ID برقم معين الC_ID هوا رقم العميلاريده ادخال التاريخ للعميل الذى تم تسجيله اي عميل تم تسجيله تقديم بلاغ
بتاريخ: 15 مايو 200916 سنة comment_156955 إذن شيل الرقم واكتب بعد جملة ال where الاتي WHERE C_ID =:new.C_id; أتمنى أن يكون هذا قصدك تقديم بلاغ
بتاريخ: 15 مايو 200916 سنة كاتب الموضوع comment_156957 فعلا هذا قصدى بالفعل وقد جربتها كثيرا كدا بنفس الطريقه ولم تعمل الا بعد ما كتبتها انتشكرا جدا على تعبك معاياولاكن لما بدخل بيانات عميل جديد واحفظها لا يتم حفظها بسبب 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 ' تقديم بلاغ
بتاريخ: 15 مايو 200916 سنة comment_156959 أتمنى أن ترسل الجداول ويكون مكتوبين بطريقة عادية دون الزيادات الكثيرة التي بها كي نستطيع بإذن الله معرفة الخطأ بصراحة أنا تايه في الجداول هتتعب شوية وتكتبهم عادي خالص وهحاول مساعدتك بإذن الله تقديم بلاغ
بتاريخ: 16 مايو 200916 سنة كاتب الموضوع comment_157061 هتلاقى الجداول فى المرفقات TABLES.txt تقديم بلاغ
بتاريخ: 17 مايو 200916 سنة comment_157113 أخي الكريم جرب كده التريجر بهذا الشكل وتأكد من النتائج جيدا وقولي ربما يكون هناك خطأ 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; تقديم بلاغ
بتاريخ: 18 مايو 200916 سنة كاتب الموضوع comment_157273 الف شكر ليك يا اخى ربنا يبارك فى علمك تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.