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

Triggers


silmoooo

Recommended Posts

محتاج اعمل TRIGGERS  وظيفتها انها تعمل بعد INSERT  تحديث BALANCE  اللي موجود في جدول اسمه SUPPLIERS  عن طريق AMOUNT,PAID,CREDIT موجودين في جدول اسمه PURCHASE_BILLS    لكم منا كل تقدير وإحترام .

رابط هذا التعليق
شارك

كده مينفعش تتعلم حاجة علي فكرة , اقرأ عن التريجرز , واعمل حاجة , وحاول تشغلها وقلنا مش شغالة ليه , واحنا نساعدك في تعديلها

رابط هذا التعليق
شارك

create or replace trigger upd_balance 
after insert on PURCHASE_BILLS 
for each row
begin
update suppliers 
set balance = <your update >
where suppliers.foreign key column = :new.primary key column;
end;

هو ممكن يكون كده بس ياريت توضيح المطلوب اكثر

تم تعديل بواسطة AhmedOmar
رابط هذا التعليق
شارك

 

CREATE OR REPLACE TRIGGERS UPDATE_SUPPLIERS_BALANCE 

AFTER INSERT ON PURCHASE_BILLS 

  VD NUMBER(20);

BEGIN

  SELECT AMOUNT INTO VD

  FROM purchase_bills

  WHERE supplier_id=SUPPLIERS.SUPPLIER_ID;

  IF VD>:OLD.AMOUNT THEN

  UPDATE SUPPLIERS SET BALANCE= balance+AMOUNT WHERE sUPPLIERS.supplier_id= pURCHASE_BILLS.supplier_id;

  dbms_output.put_line(BALANCE||' _ '||AMOUNT||' _ '||PAID);

  ELSE 

  RAISE_APPLICATION_ERROR(20001,'NO INSERTING NEW');

END UPDATE_SUPPLIERS_BALANCE;

 

ده كود انا حاولت انفذه مش راضي وحاوللت بأكتر من كود ومش نافع ثانيا انا د

ي اول مشاركة ليا وانا مش بطلب شئ غير لما اكون غلبت على امري 

علي العموم دي اول واخر مشاركة علشان خاطرك يا هندسة 

 

رابط هذا التعليق
شارك

اولا ما فيش حاجة اسمها اول و اخر مشاركة طالما عايز تسال فى حاجة اسال فيها هو بس ممكن يكون بيحمسك شوية ما فيش ضغائن ما بينا

بالنسبة للكود هو ليه حضرتك مستخدم if فيه

ثانيا مش حنعوض عن الجدول الجديد باسمه لكن بالقيم old و new

ثالثا حضرتك عاطى قيمة لل vd اللى هى ال amount ازاى عاوزه يبقى اكبر من قيمته و انه قيمة بردو

و ما ينفعش نحط اسماء الاعمدة داخل امر dbms_output.put_line لازم نعوض عنها بمتغير لو كانت قيمة واحدة او بكيرسور لو عاوز اطبع اكثر من قيمة

هو ده التريجر اللى انا جربته و تم انشائه عادى لكن شيلت حاجات كثير منه جربه و عدل فيه زى ما يناسبك

ولو عايز حاجة اسال و خلى صدرك رحب كده :)

CREATE OR REPLACE TRIGGER UPDATE_SUPPLIERS_BALANCE 
AFTER INSERT ON PURCHASE_BILLS 
for each row
declare
VD number;
BEGIN
  SELECT AMOUNT INTO VD
  FROM purchase_bills
  WHERE supplier_id=:old.SUPPLIER_ID;
  
  UPDATE SUPPLIERS SET BALANCE= balance+VD WHERE SUPPLIERS.supplier_id= :new.supplier_id;

END UPDATE_SUPPLIERS_BALANCE;
رابط هذا التعليق
شارك

اول واخر مشاركة ايه يا عم , امال لو شفت الناس ع الـ otn forum , ده انا فضلت اسأل 3 ايام سؤال وفهمي للكود مكنش هيفدني بأي حاجة ,

ومحدش راضى يجاوبني الا لما افهم الكود بيعمل ايه .

انا مقصدش حاجة انا بقلك لمصلحكتك , مقصدتش غير الخير يعني ,

وبعدين اولا لازم تقولنا الكود مش عايز يتنفذ ليه , يعني ايه الايرور الي بيطلعلك ايه عشان نعرف ايه المشكلة ,

تاني حاجة طبيعي ان الكود ميتنفذش من غير مشوف الايرور لانك كاتب

CREATE OR REPLACE TRIGGERS , يعني حاطط S زيادة , طبيعي ميتنفذش

صلحها بقى وقلنا ايه الايرور الي بيطلع .

رابط هذا التعليق
شارك

الموضوع طلع بسيط . بس المشكلة والعصبية اللي كانت عندي أني قعدت فيها وقت طويل حتي الكود الصحيح اللي انا كاتبة ده عملت من قبل بس فعلا كان فيه S  زيادة علشان كده مكنش بينفذ . شاكرين ومقدرين . وأنا فعلا بتأسف . وأنت دخلت فيا شمال ههههههههههههههههه  بس يلا محدش بيتعلم ببلاش

--------------------------------------------------------------------------
CREATE OR REPLACE TRIGGER UPDATE_SUPPLIERS_BALANCE 
AFTER INSERT ON PURCHASE_BILLS 
FOR EACH ROW
BEGIN
  UPDATE SUPPLIERS SET BALANCE=balance+:NEW.AMOUNT WHERE supplier_id=:NEW.supplier_id;
END UPDATE_SUPPLIERS_BALANCE;
-------------------------------------------------------------------------------
رابط هذا التعليق
شارك

اولا انت عندك ammount =paid+credit وال credit  هو عباره عن رصيد المورد اللى هى ال balance فى جدول suppliers  ودا بيبقى الرصيد اللى ليه والتريجر هنا سهل وبسيط لان انا شغال فى مشروع مشابه  وهو بكل بساطه

create or replace trigger ....................

after insert on purchase_bills

for each row
begin
update suppliers
set balance=balance+:new.credit
where supplier_id=:new.supplier_id
end;

شوف دا كدا ولو فى حاجه انا معاك

رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية