قواعد مثل "لا حجز مزدوج" أو "لكل طلب سطر واحد على الأقل" تمتد عبر صفوف كثيرة. لسنوات كتبناها في المشغّلات أو كود التطبيق وتمنّينا ألا تتسابق جلستان. بدءًا من الإصدار 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 — بالعربية أو الإنجليزية. دون إزعاج، ويمكنك إلغاء الاشتراك متى شئت.