الانتقال إلى المحتوى
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.

المساعدة في كتابة Trigger كيفية اختبار نوع العملية (insert/update/delete)

Featured Replies

بتاريخ:

السلام عليكم

وكل عام وانتم بخير

احاول كتابة (trigger) التالي: غير أني اريد المساعدة في معرفة كيف يمكن فحص العملية (insert/update/delete) لاختار منها رقم المدرب

trigger:

CREATE OR REPLACE TRIGGER TRG_HIGH_QUALIFICATION 
AFTER INSERT OR DELETE OR UPDATE ON BSC_INSTRCTR_QUALIFICATIONS 
BEGIN
  UPDATE bsc_instructors SET qualification =
  (
  SELECT QUALIFICATION 
  FROM BSC_INSTRCTR_QUALIFICATIONS 
  WHERE QUALIFICATIONYEAR = (
                              SELECT MAX(QUALIFICATIONYEAR) 
                              FROM BSC_INSTRCTR_QUALIFICATIONS
                              Where INSTRUCTOR_NO = 
                            )
  )
END;

جدول المدربين :

CREATE TABLE BSC_INSTRUCTORS 
(
  NOA NUMBER NOT NULL 
, NOM VARCHAR2(20 BYTE) UNIQUE
, FULLNMAE VARCHAR2(100 BYTE) NOT NULL 
, DOB DATE 
, GENDER NVARCHAR2(5) NOT NULL 
, QUALIFICATION  NUMBER NOT NULL
, COUNTRY NUMBER 
, HAVE_TOT NVARCHAR2(3) 
, TRAININGFIELDS NVARCHAR2(2000) 
, TEL NVARCHAR2(100) 
, EMAIL NVARCHAR2(150) 
, TWITTER NVARCHAR2(100) 
, FACEBOOK NVARCHAR2(100) 
, LINKEDIN NVARCHAR2(100) 
, GOOGLEPLUS NVARCHAR2(100) 
, NOTE NVARCHAR2(2000) 
, DELETED NUMBER DEFAULT 0 
, CONSTRAINT TBLINSTRUCTORS_PK PRIMARY KEY 
  (
    NOA 
  )
  ENABLE 
,CONSTRAINT FK_Instuctr_Country FOREIGN KEY
(
  Country 
)
REFERENCES BSC_Country
(
  NOA 
)
ENABLE 
,CONSTRAINT FK_Instuctr_Quali FOREIGN KEY
(
  QUALIFICATION 
)
REFERENCES BSC_QUALIFICATIONS
(
  NOA 
)
ENABLE 
);

جدول مؤهلات المدربين:

CREATE TABLE BSC_INSTRCTR_QUALIFICATIONS 
(
  NOA NUMBER NOT NULL 
, QUALIFICATION NUMBER NOT NULL 
, QUALIFICATIONDSCRPT NVARCHAR2(200) 
, SPECIALIZATION NUMBER NOT NULL 
, QUALIFICATIONYEAR DATE 
, COUNTRY NUMBER 
, QUALIFICATIONDEGREE NUMBER 
, QUALIFICATIONPRIVIDER NVARCHAR2(100) 
, INSTRUCTOR_NO NUMBER NOT NULL 
, DELETED NUMBER DEFAULT 0 
, CONSTRAINT TR_INSTRUCTOR_QUALIFICATIO_PK PRIMARY KEY 
  (
    NOA 
  )
  ENABLE 
,CONSTRAINT FK_INSTRCTR_Qualif FOREIGN KEY
(
  QUALIFICATION 
)
REFERENCES BSC_QUALIFICATIONS
(
  NOA 
)
ENABLE
,CONSTRAINT FK_INSTRCTR_Specializ FOREIGN KEY
(
  SPECIALIZATION 
)
REFERENCES BSC_SPECIALIZATIONS
(
  NOA 
)
ENABLE
,CONSTRAINT FK_INSTRCTR_QUALIF_INSTRCTR FOREIGN KEY
(
  INSTRUCTOR_NO 
)
REFERENCES BSC_INSTRUCTORS
(
  NOA 
)
ENABLE  
);
بتاريخ:

 

السلام عليكم

وكل عام وانتم بخير

 اريد المساعدة في معرفة كيف يمكن فحص العملية (insert/update/delete) لاختار منها رقم المدرب

 

مش فاهم تقصد ايه؟ يمكن تقصد 

if inserting then 

.....

elsif updating then ....

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

 

 

السلام عليكم

وكل عام وانتم بخير

 اريد المساعدة في معرفة كيف يمكن فحص العملية (insert/update/delete) لاختار منها رقم المدرب

 

مش فاهم تقصد ايه؟ يمكن تقصد 

if inserting then 

.....

elsif updating then ....

 

 

هو بالظبط المطلوب يا باشمهندس

بس لو تزيد معاي شوي

استطيع اسناد قيمة حقل في متغير في (sql server) كالتالي:

Declare @X bigint

IF Exists(Select 1 from Inserted) (Select @X = Doctor_No from inserted)


فكيف يمكنني كتابة كود مشابه له في الاوراكل مع وضع احتمال العمليات الثلاثة (insert/update/delete)

جزاك الله خيراً

بتاريخ:

برده مش فاهمك. بس شكلك تقصد ازاى تعرف القيمة الجديدة وتعينها لمتغير.

انت محتاج تقرأ عن التريجرز الاول.

:new.column_name بتجيب القيمة الى هيحصلها Insert.

وبتعين القيمة لمتغير كالتالى:-

x := :new.column_name;
بتاريخ:

السلام عليكم ورحمة الله وبركاته

بالنسبة للكود الخاص بال Trigger المكتوب في اول البوست 

  -غير مسموح بإجراء select على Table بتعمل عليه DML في نفس ال Trigger

  -الـ Table  اسمه BSC_INSTRCTR_QUALIFICATIONS لأن في الوقت ده بيكون Mutating  

 

CREATE OR REPLACE TRIGGER TRG_HIGH_QUALIFICATION
AFTER INSERT OR DELETE OR UPDATE ON BSC_INSTRCTR_QUALIFICATIONS 
DECLARE
   V_NUMBER NUMBER(10) := 0;
BEGIN
  IF UPDATING OR DELETING THEN
      ...
      ...
      V_NUMBER := 1;
  ELSE
      ...
      ...
 

 

      V_NUMBER := :NEW.ID;
END;

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

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

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

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

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

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.