পরিবর্তনীয় টেবিল ত্রুটির সর্বাধিক কারণ হ'ল ট্রিগারগুলির অপব্যবহার। এখানে একটি সাধারণ উদাহরণ:
- আপনি টেবিল এ একটি সারি সন্নিবেশ করান
- টেবিল এ-তে একটি ট্রিগার (প্রতিটি সারির জন্য) টেবিল এ-তে একটি কোয়েরি চালায়, উদাহরণস্বরূপ একটি সংক্ষিপ্তসার কলাম গণনা করার জন্য
- ওরাকল একটি ORA-04091 নিক্ষেপ করেছে: টেবিল এ পরিবর্তিত হচ্ছে, ট্রিগার / ফাংশন এটি দেখতে পাবে না
এটি একটি প্রত্যাশিত এবং স্বাভাবিক আচরণ, ওরাকল যেহেতু ওরাকল গ্যারান্টি দেয় সেহেতু আপনাকে নিজেকে থেকে রক্ষা করতে চায়:
- (i) প্রতিটি বিবৃতি পারমাণবিক (অর্থাত ব্যর্থ বা সম্পূর্ণ সফল হবে)
- (ii) প্রতিটি বিবৃতি ডেটার একটি সামঞ্জস্যিক দৃষ্টিভঙ্গি দেখায়
সম্ভবত আপনি যখন এই জাতীয় ট্রিগার লিখেন তখন আপনি কোয়েরি (2) থেকে (1) সন্নিবেশ করা সারিটি দেখতে আশা করবেন। এটি উপরের দুটি পয়েন্টের সাথে বৈপরীত্য হতে পারে যেহেতু আপডেটটি এখনও শেষ হয়নি (আরও সারি সন্নিবেশ করার জন্য থাকতে পারে)।
ওরাকল বিবৃতি শুরুর ঠিক আগে সময়ে একটি পয়েন্টের সাথে ধারাবাহিকভাবে ফলাফলটি ফিরিয়ে দিতে পারত তবে বেশিরভাগ উদাহরণ থেকে আমি দেখেছি যে এই যুক্তিটি বাস্তবায়নের চেষ্টা করা হয়েছে, লোকেরা একের পর এক পদক্ষেপের একটি সিরিজ হিসাবে বহু-সারির বিবৃতি দেখে এবং প্রত্যাশা করে পূর্ববর্তী পদক্ষেপগুলির দ্বারা পরিবর্তনগুলি দেখতে বিবৃতি [2]। ওরাকল প্রত্যাশিত ফলাফলটি ফিরিয়ে দিতে পারে না এবং তাই ত্রুটিটি ছুঁড়ে দেয়।
আরও পড়ার জন্য: আসক টমের "পরিবর্তনকারী টেবিল" ।
যদি আমি সন্দেহ করি যে পরিবর্তিত টেবিল ত্রুটির কারণটি একটি ট্রিগার, ত্রুটি এড়ানোর এক উপায় হ'ল যুক্তিটিকে ট্রিগার থেকে প্রক্রিয়াতে সরিয়ে নেওয়া।