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

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

صورة
- - - - -

Aud Trigger


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

#1 Barakat

Barakat

    مشترك

  • الأعضــاء
  • 166 مشاركة

تاريخ المشاركة 13 January 2008 - 10:41 AM

أخواني الاعزاء هذا 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;

Eyad Barakat
Database Administrator

#2 المبرمج الصاعد

المبرمج الصاعد

    مشرف عام

  • الفريق الإداري
  • 715 مشاركة
  • البـلـد: Country Flag
  • الاهتمامات:بكل جديد من التقنية..

تاريخ المشاركة 13 January 2008 - 04:25 PM

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

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

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

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

تم التعديل بواسطة المبرمج الصاعد, 13 January 2008 - 04:26 PM.

IT Manager


#3 Barakat

Barakat

    مشترك

  • الأعضــاء
  • 166 مشاركة

تاريخ المشاركة 13 January 2008 - 04:36 PM

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

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

#4 المبرمج الصاعد

المبرمج الصاعد

    مشرف عام

  • الفريق الإداري
  • 715 مشاركة
  • البـلـد: Country Flag
  • الاهتمامات:بكل جديد من التقنية..

تاريخ المشاركة 13 January 2008 - 05:23 PM

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

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

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

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

IT Manager


#5 Barakat

Barakat

    مشترك

  • الأعضــاء
  • 166 مشاركة

تاريخ المشاركة 13 January 2008 - 05:33 PM

على سبيل المثال سوف نريد ان نرى اي تعديل على عمود اسماء الموظفين :
Create or replace Trigger AUDAfter insert or delete or update on empFor each row DeclareV_action aud.action%typeBeginIf inserting thenV_action :=’Insert’;Elsif updating thenV_action := ‘Update’;Else deleting thenV_action :=’Delete’;End if;Insert into AUD values(user,sysdate,v_action,:old.sal,:new.sal,:new.ename,:old.ename);End;
وهكذا تتم العملية بإضافة اسم العمود الذي نريد ان نري اي تغيررات قد تحصل عليه
Eyad Barakat
Database Administrator

#6 المبرمج الصاعد

المبرمج الصاعد

    مشرف عام

  • الفريق الإداري
  • 715 مشاركة
  • البـلـد: Country Flag
  • الاهتمامات:بكل جديد من التقنية..

تاريخ المشاركة 13 January 2008 - 05:37 PM

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

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

IT Manager


#7 Barakat

Barakat

    مشترك

  • الأعضــاء
  • 166 مشاركة

تاريخ المشاركة 13 January 2008 - 05:56 PM

أخي العزيز

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

#8 waziry

waziry

    مشترك

  • الأعضــاء
  • 199 مشاركة

تاريخ المشاركة 18 April 2008 - 12:03 AM

[color="#0000FF"][b]السلام عليكم

لو سمحت ممكن تعمل CRATE TABLE FOR AUD TABLE
لنفس الا عمده بالضبط ، لانى عملتها ولم انجح فيها

وجزاكم الله خير
[/[/color]

#9 ابوعبدالله

ابوعبدالله

    مشترك

  • الأعضــاء
  • 142 مشاركة
  • البـلـد: Country Flag
  • الاهتمامات:Oracle HRMS

تاريخ المشاركة 22 April 2008 - 12:11 PM

على 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

هو شغال زي الفل
(وماأوتيتم من العلم إلا قليلا)

Oracle9i Database Administrator Certified Associate

#10 osama80

osama80

    مشترك

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

تاريخ المشاركة 20 May 2008 - 12:32 PM

مشكور جدا على المشاركة الطيبة و الى الامام

#11 sabi

sabi

    عضو

  • الأعضــاء
  • 28 مشاركة

تاريخ المشاركة 30 May 2008 - 08:59 AM

مشكووور على المشاركة الطيبة

#12 sabi

sabi

    عضو

  • الأعضــاء
  • 28 مشاركة

تاريخ المشاركة 30 May 2008 - 09:01 AM

مشكو حبيبي والى الامام