الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

حالات في Constraints لم افهمها ؟

Featured Replies

بتاريخ:

الاخوة الاعزاء: تحية طيبة وبعد ........

هذه بعض الحالات التي لم أفمهما عن الconstarints والتي أتمنى ان تجيبوا عليها وبكل فاعلية ونشاط وفي جميع تفاصيلها، لحاجتي الماسة لها ، ويا ريت مع الامثلة وبالعربي ........، وهذه هي الحالات :-

# DISABLE NOVALIDATE
#DISABLE VALIDATE
# ENABLE NOVALIDATE
# ENABLE VALIDATE

وهذه الحلات أيضاً خاصة في CONSTARINT CHCECKING وهي كالآتي:
# NONDEFERRED
# DEFERRED
# INITIALLY IMMEDIATE
# INITAILLY DEFERRED

وأخيراً أتمنى منكم عدم التقصير في الشرح ، وكلي أملٌ في ذلك
ولكم مني جزيل الشكر والامتنان

والسلام عليكم

بتاريخ:

الاخ الكريم
هذه الحالات بسيطة
وهي

# DISABLE NOVALIDATE
#DISABLE VALIDATE
# ENABLE NOVALIDATE
# ENABLE VALIDATE



#  NOVALIDATE

هذه الخاصية تستخدم في تعطيل constraint من نوع NOVALIDATE
وهذه الخاصية عندما يتم حذف primary key من جدول او لم يتم وضع مفتاح اساسي او تريد وضع unique على جدول فيه تكرار في البيانات ويكون البيانات كثيرة فبهذه الخاصية تستطيع ان يغض النظر عن التكرار ويبدا التشييك من بداية تعيين المفتاح الاساسي مثلا
اما validate فهي العكس تماما وهي انك تريد عند وضع مفتاح اساسي ان يشييك هل يوجد تكرار ام لا
مع ملاحظة ان هذه الحالة لا تستطيع ان تنشئ primary key ولو وجد حالة تكرار واحدة
وبالنسبة الى disable & enable فهي تعطيل او تشغيل constraint على اساس ان constraint موجود

# NONDEFERRED
# DEFERRED
# INITIALLY IMMEDIATE
# INITAILLY DEFERRED



NONDEFERRED وهي تستخدم لتأجيل عملية التشييك على البيانات سواء في حالة انشاء المفتاح الاساسي على جدول موجود فيه بيانات
DEFERRED وهي النوع في قاعدة البيانات يعني مسمى
IMMEDIATE وهي عكس NONDEFERRED اي التشييك بشكل مباشر

وبصراحة ليست لدي معلومات اكثر عن هذه الخاصية بالذات ولكن اظن انها لها دور اساسي في حال انشاء primary key
هذه امثلة
ALTER TABLE table_name
   CONSTRAINT constraint_name  INITIALLY DEFERRED NOVALIDATE



ALTER TABLE table_name
   CONSTRAINT constraint_name  NOVALIDATE



مع التحية

بتاريخ:
  • كاتب الموضوع

الاخ العزيز : شكراً لك على الشرح؟
لكنه ليس وافي ، ويا ريت من له أي معلومات أخرى أن يفيدني

وشكراً

بتاريخ:

أخى نور على نور

لنفترض أنك قمت بإنشاء جدول وأدخلت فيه عشر سجلات ثم بعد ذلك رغبت فى إنشاء قيد من أى نوع على أحد أعمدته
عند إنشاء هذا القيد فإن :
الإختيار ENABLE VALIDATE : يعنى أن القيد سيتم عمل violation checking له أى التحقق من عدم إنتهاكه عند إصدار أى جملة DML وذلك فى العشرة سجلات الموجودة بالفعل ولأى سجل آخر سيتم إدخاله أو التعديل على سجل موجود أو حذفه ( أى سيتم فحص كل سجلات السابق منها لإنشاء القيد والتالى له) وغير مسموح للبيانات التى تنتهك القيد بالإدخال.

الإختيار ENABLE NOVALIDATE : يعنى أنه سيتم التحقق من عدم إنتهاك القيد عند إصدار جمل DML الجديدة فقط دون فحص البيانات الموجودة فى السجلات قبل إنشاء القيد طالما لم يتم عمل جملة DML عليها ويفضل إستخدام هذا النوع من القيود فى ال data warehouse .

الإختيار DISABLE VALIDATE : يسمح للبيانات التى تنتهك القيد بالإدخال لكن يتم إسقاط أى فهرس موجود على القيد طالما كان القيد على الوضع الإفتراضى (NOT DEFFERED) وسوف أشرحه .. كما لايسمح بعمل أى تعديل على مواصفات الأعمدة كأن تغير طول سلسلة أحرف العمود من نوع VARCHAR2 من 20 إلى 50 مثلا .

الإختيار DISABLE NOVALIDATE : معناه أن الجدول بتاعك سلطه ومسموح للبيانات التى تنتهك القيد بالإدخال فأنت عطلت عمل القيد وأمرت بالسماح بعمل تعديل على العمود .

لاحظ هنا إذا تحولت من الوضع DISABLED بنوعيه إلى الوضع ENABLE VALIDATE :
سيتم فحص البيانات كلها ويتم عمل LOCK للجدول وإذا كنت تعمل LOAD على هذا الجدول فإنه سيتعطل قليلا لحين إنتهاء الCHECK وكذلك لو كان القيد من نوعه UNIQUE أو PRIMARY KEY فإن ذلك معناه أنه ستم إنشاء فهرس بشكل أوتوماتيكى ..
أما ال IMMEDIATE(NON-DEFFERED) CONSTRAINT : فهو القيد الذى يتم التحقق من إنتهاكه بمجرد إنتهاء جملة الDML دون إنتظار عمل COMMIT فيتم عمل ROLLBACK فورا لأى بيانات تنتهك القيد .

أما ال DEFFERED CONSTRAINT : فينتظر لكى يتم التحقق منه عند عمل COMMIT لل TRANSACTION كلها فيتم حينئذ عمل ROLLBACK لل TRANSACTION كلها .

أخيرا فإن الوضع الإفتراضى لأى قيد أن يكون :
ENABLE VALIDATE NON-DEFFERED

بتاريخ:
  • كاتب الموضوع

الاخ العزيز وليد : شكراً جزيلاً لكم على الشرح الرائع والوافي .

ولكن منكم التوضيح بال( البيانات التي تنتهك القيد )

وشكراً جزيلاً لكم

بتاريخ:

الشكر مردود ..
إنتهاك القيد Violation يعنى مخالفة البيانات التى يتم إدخالها أو تعديلها للقيد الموضوع على الحقل بمعنى لو كان نوع القيد unique فمعناه أنك لن تستطيع تكرار نفس القيمة فى نفس الحقل فلا يمكن أن يكون لديك موظفان فى حقل رقم الموظف تحت رقم 223 وكذلك لو كان القيد من نوع primary key فإنك لا تستطيع ترك الحقل فارغا عند إدخال سجل جديد وهكذا ...

بتاريخ:

مشكور يا اخ Walid Azmy
ولو تمعنت يا اخ نور على نور بشرحي لوصلت 90% من الذي تريد
على كلن الهدف هو توصيل وتوضيح المعلومة

بتاريخ:
  • كاتب الموضوع

الاخوة: Walid Azmy و admin05 شكراً جزيلاً لكم

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.