اوریکل ویو اپ ڈیٹ کی حالت۔ کلیدی محفوظ میزیں (ORA-01779: غیر اہم قدر کی بچت جدول کے مطابق کالم میں ترمیم نہیں کی جاسکتی ہے)

Oracle View Update Condition Key Preserved Tables Ora 01779



جب میں نے گذشتہ ہفتے ایک ملاحظہ کی تازہ کاری کی تھی ، تو میں نے غلطی کی تھی: ORA-01779: غیر اہم ویلیو سیف ٹیبل کے مطابق کالم کو تبدیل نہیں کیا جاسکتا۔ اس مسئلے کو حل کرنے کے ل I ، میں نے بہت سارے لوگوں کے بلاگ براؤز کیے ہیں ، اور ان میں سے بیشتر نے صرف یہ مثال دیئے بغیر کہ جہاں یہ ضروری مسئلہ ہے۔ صرف یہ بلاگ اس مسئلے پر بہت گہرائی سے بحث کرتا ہے ، آپ اسے پڑھ سکتے ہیں: ORA-01752 کی غلطی سے ، رجحان کے ذریعے جوہر دیکھیں

ORA-01779 cannot modify a column which maps to a non key-preserved table



اس مسئلے کو حل کرنے کی کلید یہ ہے کہ کلیدی محفوظ میزیں کیا ہیں؟





مندرجہ بالا سرکاری دستاویز کی وضاحت ہے۔ تقریبا مطلب ہے: کلیدی محفوظ ٹیبل کو سمجھنا ملٹی ٹیبل کنیکشن نظارے کی تازہ کاری کی شرائط کو سمجھنے کی اساس ہے۔ اگر ٹیبل کلیدی محفوظ ٹیبل ہے تو ، اس کی حالت مطمئن ہے: اس کی ہر بنیادی کلید (یا انوکھی کلید) بھی قول کی بنیادی کلید (یا انوکھی کلید) ہے۔ لہذا ، متعدد جدولوں کو مربوط کرنے کے بعد کلیدی محفوظ ٹیبل کی بنیادی کلید (یا انوکھی کلید) برقرار رکھی جائے گی۔

اگر آپ emp.deptno = dept.deptno کے ذریعے ایمپ اور ڈیپٹ کو مربوط کرتے ہیں تو ، نتیجہ یہ ہوگا:



مذکورہ خیال میں ، ایمپ کلیدی محفوظ میز ہے ، کیوں کہ ایمپنو ایمپ ٹیبل کی بنیادی کلید ہے ، جو کہ کنکشن کے نتائج کی بنیادی کلید بھی ہے۔ لیکن ڈیپٹ ٹیبل ایک کلیدی محفوظ ٹیبل نہیں ہے ، کیونکہ اگرچہ ڈیپٹنو ڈیپٹبل ٹیبل کی بنیادی کلید ہے ، لیکن یہ کنکشن کے نتائج کی بنیادی کلید نہیں ہے۔

لہذا ، اگر آپ کنکشن کے نتیجے میں ڈیپٹ ٹیبل کے فیلڈز میں ترمیم کرنے کی کوشش کرتے ہیں تو ، ORA-01779 کی اطلاع دی جائے گی: غیر اہم ویلیو سیونگ ٹیبل سے متعلق کالم میں ترمیم نہیں کی جاسکتی ہے۔

ایمپ ٹیبل کے کھیتوں میں ترمیم کرتے ہوئے ، یہ کامیاب ہوگا:

تجسس کی وجہ سے ، میں نے دوسری مختلف پابندیوں کی کوشش کی ، اور پھر ایک حیرت انگیز واقعہ پیش آیا:

میں نے ابھی کنکشن کی حالت کے بعد ایک قیمت شامل کی ، اور امپ غیر کلیدی محفوظ ٹیبل بن گیا۔ کیا کلیدی محفوظ جدولوں کو قدرتی کنکشن یا خود ربط یا بیرونی کنکشن کے ذریعہ منسلک کرنا ہے؟