الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

ترجرز مراقبة جدول

Featured Replies

بتاريخ:

السلام عليكم

عندي سوال بخصوص طريقة كتابة تريجرز جدولين وهذا التريجر يخص Audit وبصراحه الكود اللي كتبتة مانفع معايا على جدولين يعني فقط يقبل واحد جدول ولكن انا اريد ان اضيف جدول اليوسر مع الجدول الاساسي حتى اعرف مين اللي عمل التغييرات طبعا انا هذا الترجرز فقط اريد اجربة يعني لو انا بدي اعمل مراقبة على النظام كله راح يكون صعب شوية. طبعا بيطلع لي خطا وهو كومبيليشن ايرور. طبعا انا كتبت الكود مرتين وما نفع معايا. اذا كان عندكم فكرة كيف اعدل في الكود او طريقة لاظهار اسم اليوسر لانة انا عندي جدول خاص باليوسر.



CREATE OR REPLACE TRIGGER referencing_clause
AFTER UPDATE OR INSERT OR DELETE
ON PATIENT, USER_PRV
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
 INSERT INTO audit_log
 (o_fname, o_mname, o_lname,o_patid, n_fname,n_mname,n_lname,n_patid, chng_by,chng_time, chng_when)
 VALUES
 (:OLD.first_name, :OLD.last_name, :OLD.family_name, :OLD.PAT_ID, :NEW.first_name, :NEW.last_name, :NEW.family_name , :NEW.PAT_ID, :USR_ENAME, SYSDATE, SYSDATE);
END referencing_clause;
/





CREATE OR REPLACE TRIGGER referencing_clausee
AFTER UPDATE OR INSERT OR DELETE
ON PATIENT
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
 INSERT INTO audit_log
 (o_fname, o_mname, o_lname,o_patid, n_fname,n_mname,n_lname,n_patid, chng_by,chng_time, chng_when)
 VALUES
 (:OLD.first_name, :OLD.last_name, :OLD.family_name, :OLD.PAT_ID, :NEW.first_name, :NEW.last_name, :NEW.family_name , :NEW.PAT_ID, :USER_PRV.USR_ENAME, SYSDATE, SYSDATE);
END referencing_clausee;
/

بتاريخ:

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

تم تعديل بواسطة abdu1_far

بتاريخ:

اخي العزيز

سؤالك غير مفهوم
هل تريد عمل Auditing على النظام عن طريق الفورم مثلاً

ارجو التوضيح؟؟؟؟؟؟

بتاريخ:

لا يمكنك وضع تريجر على جدولين بآن واحد لازم تعمل تريجر لكل جدول.

بتاريخ:
  • كاتب الموضوع

طيب انا راح اشرح بشكل اكثير

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

CREATE TABLE audit_log (
o_fname   VARCHAR2(20),
o_mname   VARCHAR2(20),
o_lname   VARCHAR2(20),
o_patid NUMBER(10),
n_fname   VARCHAR2(20),
n_mname   VARCHAR2(20),
n_lname   VARCHAR2(20),
n_patid NUMBER(10),
chng_by   VARCHAR2(100),
chng_time VARCHAR2(20),
chng_when DATE);




ولكن عندما استخدم التريجرز اللي كاتبة بالاول مايشتغل معايا صحيح وكلة بسبب اضافة اسم اليوسر التابع لجدول المستخدمين فانا فقط يهمني اسم اليوسر حتى اعرف مين اللي عمل احد الاجراءات.
طبعا التريجرز اللي انا واضعه هنا على مستوى قاعدة البيانات معا اني ودي ان اضعه على مستوى الفورم ولكن مش عارف كيف اغير الصيغة حتى يتلائم لانه هنا انا عامل ثلاث حركات وهي بعد الادخال وبعد عمل ابديت وبعد عمل ديليت ولكن في الفورم كل تريجرز لوحدة ِيعني زي كذا تجده في الفورم ِPOST-INSERT, POST-DELETE, POST-UPDATE فانا الصراحه ماعندي خلفية ووجدت كتابة التريجرز على مستوى قاعدة البيانات اسهل علي. على كل حال اذا عندك خلفية كيف نعمل تريجرز من داخل الفورم يكون افضل. على فكرة انا طبقت هذه الفكرة ووضعت جدول الاوديت لوج في الفورم واستطعت ان ارى التعديلات ولكن لااستطيع ان اعرف اسم اليوسر اللي غير. واذا كان لديك فكرة عن طريقة عمل اوديت للنظام كامل يكون افضل. لاني انا هنا فقط اريد ان اعمل فكرة مبسطة وهي على جدول واحد.

فالان كل اللي بدي اضيفة اسم اليوسر الذي عملته في جدول اخر فكيف راح ينضاف في هذا التريجرز


وشكرا لكم جميعا

تم تعديل بواسطة Only-Oracle

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

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

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

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

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

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.