ملاحظات26aiSQLData integrity

قاعدة بين الصفوف داخل مشغّل أمنية لا ضمان: استخدم CREATE ASSERTION

يتيح Oracle AI Database 26ai (من الإصدار 23.26.1) تعريف قواعد بين الصفوف والجداول بلغة SQL وتفرضها قاعدة البيانات.

قواعد مثل "لا حجز مزدوج" أو "لكل طلب سطر واحد على الأقل" تمتد عبر صفوف كثيرة. لسنوات كتبناها في المشغّلات أو كود التطبيق وتمنّينا ألا تتسابق جلستان. بدءًا من الإصدار 23.26.1 يضيف Oracle AI Database 26ai الأمر CREATE ASSERTION: قاعدة بين الصفوف والجداول تُكتب بلغة SQL وتفرضها قاعدة البيانات.

ما يجب معرفته

  • اكتب القاعدة كاستعلام: NOT EXISTS أو الصيغة الجديدة ALL ... SATISFY التي تقلّل النفي. أي تغيير يخالفها يفشل بالخطأ ORA-08601.
  • DEFERRABLE INITIALLY DEFERRED ينقل الفحص إلى لحظة الـ commit، فيمكن إدخال الأب وأبنائه في معاملة واحدة. الافتراضي فحص على مستوى الجملة.
  • تتولى قاعدة البيانات مشكلات التزامن: لا أقفال يدوية. وتعمل القيود في READ COMMITTED لا في SERIALIZABLE.
  • في الجداول الكبيرة يتخطّى ENABLE NOVALIDATE الصفوف الموجودة فيكون الإنشاء فوريًا، ثم تتحقق لاحقًا بـ ALTER ASSERTION ... VALIDATE. وأنشئ فهارس على الأعمدة التي تربط بها القاعدة وتصفّي عليها.

لماذا الآن: صفحات APEX والواجهات البرمجية ومهام الدفعات، والآن وكلاء الذكاء الاصطناعي، كلها تكتب في الجداول نفسها. عرّف القاعدة مرة واحدة وستفرضها قاعدة البيانات على الجميع. جرّبها على مخطط تجريبي في حاوية 26ai Free من الدليل المرتبط.

المصادر: Cross-table constraints with assertions وAssertion performance ومرجع CREATE ASSERTION.

اشترك في نشرة أوراكل والذكاء الاصطناعي

رسالة واحدة عند نشر دليل مُختبر أو قالب جديد أو ملاحظات إصدار APEX — بالعربية أو الإنجليزية. دون إزعاج، ويمكنك إلغاء الاشتراك متى شئت.