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

Aud Trigger


Barakat

Recommended Posts

أخواني الاعزاء هذا Trigger
يقوم بمعرفة بتخزين اسم و العملية التي قام بها (ادخال , حذف , تعديل ) على عمود الرواتب في جدول الموظفين
و تاريخ العملية و القيمة القديمة و الجديدة للراتب
لكن اولا يجب انشاء جدول بنفس الاعمدة الموجودة بجملة الادخال داخل ال Trigger

Create or replace Trigger AUD
After insert or delete or update on emp
For each row 
Declare
V_action aud.action%type
Begin
If inserting then
V_action :=’Insert’;
Elsif updating then
V_action := ‘Update’;
Else deleting then
V_action :=’Delete’;
End if;
Insert into AUD values(user,sysdate,v_action,:old.sal,:new.sal);
End;

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

السلام عليكم؟

تشكر اخي المهندس إياد على هذا المعلومة ..

ولاكن إذا أبغى أن أعرف التعديل على جميع حقول الجدول إلى عندي مثلا ....
وأريد أن تظهر في حساب المسؤول على النظام بحيث يعرف من قام بالتعديل في إي حقل وما هي القيمة الجديدة والقيمة القديمة لجميع الجدول ..

وشكرا جزيل لك ...

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

أولا : أود أن اشكرك على التواصل المستمر
ثانيا : بخصوص ان ترى اي تعديل على اي عمود ضمن هذا الجدول
الموضوع جدا بسيط عليك فقط بإضافة عمودين ( عمود للقيمة الجدية و اخر للقيمة القديمة ) في الجدول AUD لكل جدول تريد ان ترى التعديل
الذي حصل به و في جملة الادخال الموجودة داخل Trigger قم باضافة هذه الاعمدة فقط كما هو واضح في عمود الرواتب (sal )

و ارجو ان تكون المعلومة وصلت و ان اكون نجحت في شرح الفكرة

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

مشكور على الرد السريع أخي,,,

لو ماعليك كلفة أخي ممكن تشرح أكثر ,,,

وجزاك الله عني كل خير

محتاجة ضروري جدا جدا

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

على سبيل المثال سوف نريد ان نرى اي تعديل على عمود اسماء الموظفين :

Create or replace Trigger AUD
After insert or delete or update on emp
For each row 
Declare
V_action aud.action%type
Begin
If inserting then
V_action :=’Insert’;
Elsif updating then
V_action := ‘Update’;
Else deleting then
V_action :=’Delete’;
End if;
Insert into AUD values(user,sysdate,v_action,:old.sal,:new.sal,:[color="#FFFF00"]new.ename,:old.ename[/color]);
End;


وهكذا تتم العملية بإضافة اسم العمود الذي نريد ان نري اي تغيررات قد تحصل عليه

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

وضحت الفكرة اخي ولك مني جزيل الشكر والتقدير

وإلى الأمام أخي ....

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

أخي العزيز

اتمنى ات تكوت الفكرة وصلت فعلا
و لاي استفسار الرجاء عدم التردد في السؤال
و سوف اجاوب في اقرب فرصة ممكنة إذا كنت اعرف الجواب

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

  • بعد 3 شهور...

على HR SCHEMA قمت بانشاء الجدول كما يلي

CREATE TABLE AUD
(
 CREATE_DATE  DATE,
 ACTION       VARCHAR2(20 BYTE),
 OLD          NUMBER(8,2),
 NEW          NUMBER(8,2),
 CREATE_BY    VARCHAR2(20 BYTE)
)

ثم قمت بتعديل التريقر  كالاتي

CREATE OR REPLACE TRIGGER HR.AUD
After insert or delete or update ON HR.EMPLOYEES For each row
Declare
V_action aud.action%type;
Begin If inserting then
V_action :='Insert';
Elsif updating then
V_action := 'Update';
Elsif deleting then
V_action :='Delete';
End if;
Insert into AUD values(sysdate,v_action,:old.SALARY,:new.SALARY,USER);
End;
/


مع ملاحظة ان اسم الجدول هنا EMPLOYEES
واسم المرتب SALARY

هو شغال زي الفل

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

  • بعد 4 أسابيع...
  • بعد 2 أسابيع...

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

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

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

×   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.

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

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

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