بتاريخ: 20 مارس 200620 سنة comment_63599 اخواني في الله السلام عليكم ورحمة اللهانا في مشكله واريد من اهل الخبره مساعدتيعندي SQL script يحتوي علي الاتي 1- insert into table1(select * from SCHEMA2.TABLE1)2- insert into table2(select * from SCHEMA2.TABLE2)3- insert into table3(select * from SCHEMA2.TABLE3)Commitالمشكله التي تواجهني ان في بعض الاحيان يتم تنفيذ 1 و2 وتفشل 3 وهذا غير مطلوبالمطلوب: انه اذا فشل تنفيذ ايا من هذه الجمل يتم عمل rollback دون تنفيذ ايا من هذه الجملفهل توجد طريقه لحل هذه المشكله؟؟؟أفيدوني أفادكم الله تقديم بلاغ
بتاريخ: 20 مارس 200620 سنة comment_63611 الحل الاسهل عمل commit بعد كل عبارهالحل الاصعب استخدام داله ذات جلسة عمل منفصله autonomouse transactionمع تمنياتي بالتوفيق تقديم بلاغ
بتاريخ: 20 مارس 200620 سنة كاتب الموضوع comment_63630 شكرا لتجاوبك اخي black & whiteولكن بالنسبه للحل الاول بإضافة commit بعد كل Insertفهذا غير مطلوب لان المطلوب هو عمل commit فقط في حالة نجاح تنفيذ جميع جمل ال insert>>اما في حالة فشل ايا منهم مطلوب الخروج دون عمل اي commit (ارجو ان تكون المشكله واضحه الان تقديم بلاغ
بتاريخ: 20 مارس 200620 سنة comment_63642 اخي الكريمضع التاليفهذه الطريقة تفحص اذا نعم يقوم بالتخزين والاى يقوم بعمل rollback insert into table1(select * from SCHEMA2.TABLE1) insert into table2(select * from SCHEMA2.TABLE2) insert into table3(select * from SCHEMA2.TABLE3) COMMIT; EXCEPTION when others then DECLARE server_err NUMBER := abs(DBMS_ERROR_CODE); server_msg VARCHAR2(2000) := DBMS_ERROR_TEXT; BEGIN rollback; message('Error during insert: '||to_char(server_err) ||'-'||server_msg); END; تقديم بلاغ
بتاريخ: 21 مارس 200619 سنة كاتب الموضوع comment_63758 أخي Admin5شكرا لتعاونك واهتمامك....فعلا استطعت بهذه الطريقه عمل transaction واحد لكل insert commandsجزاك الله خيرا يا اخي تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.