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

Featured Replies

بتاريخ:

مرحبا
السلام عليكم
هل يمكننا ان نكتب تريجر يجمع بين امرين؟
مثلا لدي جدولان يوجد باحدها forign key من الجدول الاخر
واريد مثلا منع حذف اي صف من الجدول الاساسي وكذلك منع اي تعديل على احد attributeالخاصه فيه لنفرض مثلا name ..
هل يمكن جمع هذان الشرطان مع بعض؟؟
ام احتاج لعمل 2trigger احدهما يمنع الحذف والاخر يمنع تعديل الاسم؟؟

بتاريخ:

سؤالك رائع والاجابة يمكن لكن سأترك لك مساحة التفكير في كيفية عمل ذلك بنفسك لكنه مؤكد يمكن ولك أن تعلم في عالم البرمجة

Your Limitation is your imagination

أتركك مع مثال لذلك وبالتوفيق


SQL>
SQL>
SQL>
SQL> CREATE TABLE myTable1 (a INTEGER, b CHAR(10));

Table created.

SQL>
SQL> CREATE TABLE myTable2 (c CHAR(10), d INTEGER);

Table created.

SQL>
SQL>
SQL> CREATE TRIGGER trig1
 2      AFTER INSERT ON myTable1
 3      REFERENCING NEW AS newRow
 4      FOR EACH ROW
 5      WHEN (newRow.a <= 10)
 6      BEGIN
 7          INSERT INTO myTable2 VALUES(:newRow.b, :newRow.a);
 8      END trig1;
 9  

Trigger created.

SQL>
SQL> insert into myTable1 values(1,'a');

1 row created.

SQL> insert into myTable1 values(2,'b');

1 row created.

SQL>
SQL> select * from myTable1;

        A B
---------- ----------
        1 a
        2 b

SQL> select * from myTable2;

C                   D
---------- ----------
a                   1
b                   2

SQL>
SQL> drop table myTable1;

Table dropped.

SQL> drop table myTable2;

Table dropped.

SQL>

          
        

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

:) شكرا جزيلا استاذي الفاضل سررت كثيرا بأن هناك من رد على سؤالي

بالنسبة للكود الذي وضعته فهمته قمت بتعبئه بيانات الجدول الثاني بعد تعبئة الجدول الاول باستخدام نفس القيم

 

لكني لم استطع تفسير سؤالي بناء على مااوضحت لي

فمثلا لو قمت بعمل

CREATE OR REPLACE TRIGGER trg_deltest
  BEFORE DELETE
  ON test
  FOR EACH ROW
  WHEN (OLD.name = 1)
BEGIN
  raise_application_error (-20100, 'You can not delete ');
END;
/

 

هنا استطيع منع اي حذف يتم بناء على الشرط

لكن عملية الجمع بين منع الابديت على متغير محدد مثل النيم ومنع حذف اي صف من نفس الجدول لم اتوصل لها الى الان

 

مثلا على افتراض انه قام المستحدم بمحاولة حذف اي صف بناء على متغير اخر غير name

!!!!!!!!!!!!!!

 

فلو كنت ارغب منع الحذف او التعديل على نفس المتغير فهذا سهل ان شاء الله لكن هنا اجد اشكالا

 

اتمنى ان تتحمل اسئلتي التي قد ترى انها تافهه بعض الشيء او صعوبة استيعابي لاني مبتدئه في هذا الامر

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

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

شكرا لك
تم حل المشكلة ولله الحمد

شكرا مرة اخرى

بتاريخ:

ما الحل الذي وجدته اخي

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

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

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

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

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

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.