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

سؤال بخصوص Trigger


RTL

Recommended Posts

مرحبا
السلام عليكم
هل يمكننا ان نكتب تريجر يجمع بين امرين؟
مثلا لدي جدولان يوجد باحدها 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

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

 

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

 

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

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

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

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

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

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

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

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

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

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