بتاريخ: 14 مارس 200521 سنة comment_29674 هناك يوجد انواع لل buffer في pl/sql ومنها new و oldفهل يستطيع احد ان يشرحها لنا وان يعرفنا ببقية الانواعوشكرا للجميع مشاركين ومشاهدين تقديم بلاغ
بتاريخ: 14 مارس 200521 سنة comment_29698 السلام عليكم ،اليك المثال التالى لكيفية استخدام البيانات قبل التعديل بالجدول من خلال جدول الold وايضا البيانات بعد التعديل من جدول new أفضل استخدام DB trigger على الجدول .. اليكم مثال على جدول emp فى scott [align=left]--انشاء جدول جديد لمتابعة اي تعديلات بالزيادة تتم على الراتب بجدول الموظفين-- rewno = primary key from sequence.-- eno = employee number -- osalary = old salary before update-- nsalary = new salary after update-- remark = any comments .. calculate percentage of incresed -- edate = entery date = system date of transaction.-- operator = user number as connect to database .-- تاريخ تسجيل الحركة سيكون مباشرة من الجهاز-- المستخدم الذى اتم التعديل سيتم كتابته بالملف الجديد-- مطلوب مسلسل من الجهاز باستخدام - sequenace-- سيتم الكتابه بالملف فى حالة زيادة الراتب فقط -- لا يمكن زيادة الراتب بنسبة اكبر من 15 فى المائة-- يمكن التطوير للتعامل مع الحالات الاخرى -- event = insert - update - delete -- time = before - after -------------------------------------------------- create table updatesalary ( rowno number(5) primary key, eno number(4), osalary number(7,2), nsalary number(7,2), remark varchar2(100), edate date default sysdate, operator varchar2(40) default user); drop sequence seq_rowed; create sequence seq_rowed increment by 1 start with 100 ; ----------------------------------------------------------- create or replace trigger trg_salary_update before update of sal on emp for each row when (old.sal < new.sal) declare vremark varchar2(100); begin if not (( (( :new.sal - :old.sal ) / :old.sal) * 100 ) < 15 ) then raise_application_error ( -20001 , 'salary increased more than 15%'); end if ; vremark := 'for example = Salary is increased ... N % '; insert into updatesalary (rowno ,eno ,osalary ,nsalary ,remark ) values (seq_rowed.nextval,:old.empno,:old.sal,:new.sal,vremark); end ; ------------------------------------ update emp set sal = sal * 1.1 where empno = 7369[/align ]; كيف يمكن اكتشاف تعديل record و تسجيل التعديل.كيف أغير قيمة في جدول بعد عمل update لآخر. تم تعديل 14 مارس 200521 سنة بواسطة Amgad تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.