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

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

صورة
- - - - -

كيف احل هذا الخطا في الtrigger


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

#1 nan740

nan740

    عضو نشط

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

تاريخ المشاركة 01 September 2008 - 02:26 PM

قمت باضافة سجل الى الجدول الرئيسي واسمه p_data بعد ذلك

انشئت هذا الترايجر

create or replace trigger ins_pdata 
after insert or delete or update on p_data
for each row
begin if inserting then
insert into attendants (att_p_no) values(:new.p_no);
insert into saintary_Data (saint_p_no) values(:new.p_no);
insert into services (serv_p_no) values(:new.p_no);
insert into accounts (acc_p_no) values(:new.p_no);
insert into payments (pay_p_no) values(:new.p_no);
insert into RETURN_JOURNEY (re_p_no) values(:new.p_no);
insert into going_journey (go_p_no) values(:new.p_no);
insert into going_journey_edit (go_e_p_no) values(:new.p_no);
insert into return_journey_edit (re_e_p_no) values(:new.p_no);
insert into services_edit (ser_e_p_no) values(:new.p_no);
insert into p_image (ima_p_no) values(:new.p_no);
insert into users (user_p_no) values(:new.p_no);
elsif deleting then
delete from attendants where att_p_no=:old.p_no;
delete from saintary_data where saint_p_no=:old.p_no;
delete from services where serv_p_no=:old.p_no;
delete from accounts where acc_p_no=:old.p_no;
delete from payments where pay_p_no=:old.p_no;
delete from going_journey where go_p_no=:old.p_no;
delete from going_journey_edit where go_e_p_no=:old.p_no;
delete from return_journey where re_p_no=:old.p_no;
delete from return_journey_edit where re_e_p_no=:old.p_no;
delete from services_edit where ser_e_p_no=:old.p_no;
delete from p_image where ima_p_no=:old.p_no;
delete from users where user_p_no=:old.p_no;
elsif updating then
update attendants set att_p_no=:new.p_no where att_p_no=:old.p_no;
update saintary_data set saint_p_no=:new.p_no where saint_p_no=:old.p_no;
update services set serv_p_no=:new.p_no where serv_p_no=:old.p_no;
update accounts set acc_p_no=:new.p_no where acc_p_no=:old.p_no;
update payments set pay_p_no=:new.p_no where pay_p_no=:old.p_no;
update return_journey set re_p_no=:new.p_no where re_p_no=:old.p_no;
update return_journey_edit set re_e_p_no=:new.p_no where re_e_p_no=:old.p_no;
update going_journey set go_p_no=:new.p_no where go_p_no=:old.p_no;
update GOING_JOURNEY_EDIT set go_e_p_no=:new.p_no where go_e_p_no=:old.p_no;
update SERVICES_EDIT set ser_e_p_no=:new.p_no where ser_e_p_no=:old.p_no;
update P_IMAGE set ima_p_no=:new.p_no where ima_p_no=:old.p_no;
update USERS set user_p_no=:new.p_no where user_p_no=:old.p_no;
end if;

exception when no_data_found then
null;
end;



وتم الانشاء بدون اي اخطاء
بعدين عندما حاولت الاضافه مره اخرى ظعرت لي رسالة الخطا التاليه

ORA-01400: لا يجوز ادارج في null ("PLGS"."ATTENDANTS"."ATT_NO"
ORA-06512: عند "PLGS.INS_PDATA", line 3
ORA-04088: ظهر خطا اثناء تنفيذ الزناد PLGS.INS_PDATA'

وبالتالي لم استفد من هذا trigger ومن عملة افيدوني بحل هذه المشكلة'

ORACLE DEVELOPER


#2 nan740

nan740

    عضو نشط

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

تاريخ المشاركة 01 September 2008 - 11:10 PM

معقول ما حد عارف الحل لهذي المشكله لانها جننتني

ORACLE DEVELOPER


#3 Ahmed Zain

Ahmed Zain

    مشرف

  • فريق الإشراف
  • 261 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 03 September 2008 - 02:36 PM

السلام عليكم ورحمة الله وبركاته
اخي فالله
بعد التحية
اعتقد ان انت عندك مشكله في الحقل ATT_NO في جدول ال attendants معمول NOT NULL وانت ما بترسله من التريجر
فام تقوم بعمل قيمة افتراضيه لل الحقل ATT_NO بجدول attendants
او عمل INSERT له فالتريجر بقيمة معينه مثلا صفر

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

اللهم صلي وسلم على نبينا محمد وعلى اله وصحبه اجمعين الى يوم الدين سلام طيبا مباركا فيه


يا ابن آدم:انما انت أيام...كلما مضى منك يوم مضى بعضك العمر يمضي ولا تدري متى ينتهي فهل عملت لآخرتك؟؟؟


﴿ كتبت وقد أيقنت يوم كتابتي بأن يدي تفنى ويبقى كتابها فإن كتبت خيراً ستجزى بمثله وإن كتبت شراً عليها حسابها ﴾

 




Ahmed Zain El-Abedeen Mohamed
Senior Oracle Developer


My C.V & Cover Latter


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