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

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

صورة
- - - - -

توضيح لعمل تريجر ارجو المساعده


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

#1 elbanna2008

elbanna2008

    مشترك

  • الأعضــاء
  • 68 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 15 May 2009 - 12:51 PM

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

#2 mustafagamiel

mustafagamiel

    مشرف قسم النماذج والمشاريع

  • فريق الإشراف
  • 2,095 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 15 May 2009 - 02:04 PM

أخطاء بسيطة نسيان بعض الاشياء
لاحظ
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;

اللهم إن كان رزقي في الســــــــــماء فأنزله
وإن كان في الأرض فأخرجـه
وإن كان بعيدا فقربه وإن كان قريبا فيسره
وإن كان قليلا فكثره وإن كان كثيرا فبارك لي فيه

اللـــهم آمين
لا إله إلا الله وحده لاشريك له- له الملك وله الحمد وهو على كل شيء قدير
لا إله إلا أنت سبحانك-- إني كنت من الظالمين






#3 elbanna2008

elbanna2008

    مشترك

  • الأعضــاء
  • 68 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 16 May 2009 - 01:15 AM

جزاك الله خيرا يا اخى على اهتمامك
شيئ اخر اريد معرفته
فى هذه العمليه انا اريد احتساب اول كمبياله وغالبا تكون بعد شهر فالكود ده لحساب اول شهر بعد الشراء
فمش هقوله يدخلى عميل عميل انا مش عارف اعملها انه بمجرد ما احفظ سلعه عميل يقوم بحساب تريخ اول كمبياله لهذا العميل وتسجيله فى الجدول الجديد
بدل ما اكتب


انا مش عارف اوضح اوى فارجو منك الصبر

#4 mustafagamiel

mustafagamiel

    مشرف قسم النماذج والمشاريع

  • فريق الإشراف
  • 2,095 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 16 May 2009 - 01:20 AM

لم أفهم منك أوي
هل المطلوب إنك تضيف شهر على تاريخ حفظ أول سلعة للعميل

اللهم إن كان رزقي في الســــــــــماء فأنزله
وإن كان في الأرض فأخرجـه
وإن كان بعيدا فقربه وإن كان قريبا فيسره
وإن كان قليلا فكثره وإن كان كثيرا فبارك لي فيه

اللـــهم آمين
لا إله إلا الله وحده لاشريك له- له الملك وله الحمد وهو على كل شيء قدير
لا إله إلا أنت سبحانك-- إني كنت من الظالمين






#5 elbanna2008

elbanna2008

    مشترك

  • الأعضــاء
  • 68 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 16 May 2009 - 01:43 AM

جزاك الله خيرا على اهتمامك
مش عايز احدد ال C_ID برقم معين
الC_ID هوا رقم العميل
اريده ادخال التاريخ للعميل الذى تم تسجيله اي عميل تم تسجيله

#6 mustafagamiel

mustafagamiel

    مشرف قسم النماذج والمشاريع

  • فريق الإشراف
  • 2,095 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 16 May 2009 - 01:50 AM

إذن شيل الرقم واكتب بعد جملة ال where الاتي
WHERE C_ID =:new.C_id;

أتمنى أن يكون هذا قصدك

اللهم إن كان رزقي في الســــــــــماء فأنزله
وإن كان في الأرض فأخرجـه
وإن كان بعيدا فقربه وإن كان قريبا فيسره
وإن كان قليلا فكثره وإن كان كثيرا فبارك لي فيه

اللـــهم آمين
لا إله إلا الله وحده لاشريك له- له الملك وله الحمد وهو على كل شيء قدير
لا إله إلا أنت سبحانك-- إني كنت من الظالمين






#7 elbanna2008

elbanna2008

    مشترك

  • الأعضــاء
  • 68 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 16 May 2009 - 02:02 AM

فعلا هذا قصدى بالفعل
وقد جربتها كثيرا كدا بنفس الطريقه ولم تعمل الا بعد ما كتبتها انت
شكرا جدا على تعبك معايا
ولاكن لما بدخل بيانات عميل جديد واحفظها لا يتم حفظها بسبب
ORA-04091: table BFI.SALES_GOOD is mutating, trigger/function may not see it
ORA-06512: at "BFI.t_installment ", line 6
ORA-04088: error during execution of trigger 'BFI.t_installment '


#8 mustafagamiel

mustafagamiel

    مشرف قسم النماذج والمشاريع

  • فريق الإشراف
  • 2,095 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 16 May 2009 - 02:12 AM

أتمنى أن ترسل الجداول ويكون مكتوبين بطريقة عادية
دون الزيادات الكثيرة التي بها كي نستطيع بإذن الله معرفة الخطأ بصراحة أنا تايه في الجداول
هتتعب شوية وتكتبهم عادي خالص وهحاول مساعدتك بإذن الله

اللهم إن كان رزقي في الســــــــــماء فأنزله
وإن كان في الأرض فأخرجـه
وإن كان بعيدا فقربه وإن كان قريبا فيسره
وإن كان قليلا فكثره وإن كان كثيرا فبارك لي فيه

اللـــهم آمين
لا إله إلا الله وحده لاشريك له- له الملك وله الحمد وهو على كل شيء قدير
لا إله إلا أنت سبحانك-- إني كنت من الظالمين






#9 elbanna2008

elbanna2008

    مشترك

  • الأعضــاء
  • 68 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 17 May 2009 - 12:33 AM

هتلاقى الجداول فى المرفقات

ملفات مرفقة

  • ملف مرفق  TABLES.txt   1.95كيلو   22 عدد مرات التحميل


#10 mustafagamiel

mustafagamiel

    مشرف قسم النماذج والمشاريع

  • فريق الإشراف
  • 2,095 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 17 May 2009 - 12:19 PM

أخي الكريم
جرب كده التريجر بهذا الشكل وتأكد من النتائج جيدا وقولي ربما يكون هناك خطأ
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;

اللهم إن كان رزقي في الســــــــــماء فأنزله
وإن كان في الأرض فأخرجـه
وإن كان بعيدا فقربه وإن كان قريبا فيسره
وإن كان قليلا فكثره وإن كان كثيرا فبارك لي فيه

اللـــهم آمين
لا إله إلا الله وحده لاشريك له- له الملك وله الحمد وهو على كل شيء قدير
لا إله إلا أنت سبحانك-- إني كنت من الظالمين






#11 elbanna2008

elbanna2008

    مشترك

  • الأعضــاء
  • 68 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 18 May 2009 - 12:26 PM

الف شكر ليك يا اخى ربنا يبارك فى علمك