عبارة CONSTRAINT

يتشابه قيد مع فهرس، على الرغم من إمكانية استخدامه في إنشاء علاقة مع جدول آخر.

يمكنك استخدام عبارة CONSTRAINT في جملة ALTER TABLE وCREATE TABLE لإنشاء قيود أو حذفها. يوجد نوعان من عبارات CONSTRAINT: واحدة لإنشاء قيد في حقل واحد وواحدة لإنشاء قيد في أكثر من حقل.

ملاحظة: لا يدعم مشغل بيانات Microsoft Access استخدام CONSTRAINT أو أي من عبارات لغة تعريف البيانات، بقواعد بيانات لا تتبع Microsoft Access. استخدام أساليب إنشاء DAO بدلاً من ذلك.

بناء الجملة

قيد أحادي الحقل:

CONSTRAINT اسم {PRIMARY KEY | UNIQUE | NOT NULL |
REFERENCES foreigntable [(foreignfield1, foreignfield2)]
[ON UPDATE CASCADE | SET NULL]
[ON DELETE CASCADE | SET NULL]}

قيد متعدد الحقول:

CONSTRAINT اسم
{PRIMARY KEY (primary1[, primary2 [, ...]]) |
UNIQUE (unique1[, unique2 [, ...]]) |
NOT NULL (notnull1[, notnull2 [, ...]]) |
FOREIGN KEY [NO INDEX] (ref1[, ref2 [, ...]]) REFERENCES foreigntable [(foreignfield1 [, foreignfield2 [, ...]])]
[ON UPDATE CASCADE | SET NULL]
[ON DELETE CASCADE | SET NULL]}

تحتوي عبارة CONSTRAINT على هذه الأجزاء:

الجزء

الوصف

الاسم

اسم القيد المطلوب إنشاؤه.

primary1، primary2

اسم الحقل أو الحقول المطلوب تخصيصها باعتبارها مفتاح أساسي.

unique1، unique2

اسم الحقل أو الحقول المطلوب تخصيصها باعتبارها مفتاحاً فريداً.

notnull1، notnull2

اسم الحقل أو الحقول التي يتم تقييدها إلى قيم غير خالية.

ref1، ref2

اسم حقل أو حقول مفتاح خارجي التي تشير إلى حقول في جدول آخر.

foreigntable

اسم جدول المفاتيح الخارجية التي تحتوي على الحقل أو الحقول المحددة بواسطة foreignfield.

foreignfield1، foreignfield2

اسم الحقل أو الحقول في foreigntable المحدد بواسطة ref1، ref2. يمكنك حذف هذه العبارة إذا كان الحقل المُشار إليه هو المفتاح الأساسي الذي يخص foreigntable.


ملاحظات

استخدم بناء الجملة لقيد أحادي الحقل في عبارة تعريف الحقل من جملة ALTER TABLE أو CREATE TABLE مباشرة بعد مواصفات نوع بيانات الحقل.

استخدم بناء الجملة لقيد متعدد الحقول عند استخدام CONSTRAINT كلمة محجوزة خارج عبارة تعريف حقل في عبارة ALTER TABLE أو إCREATE TABLE.

استخدام CONSTRAINT يمكنك من تعيين حقل كأحد أنواع القيود التالية:

  • يمكنك استخدام الكلمة المحجوزة في UNIQUE لتعيين حقل كمفتاح فريد. هذا يعني أنه لا يوجد سجلين في الجدول بنفس القيمة في هذا الحقل. يمكنك تقييد أي حقل أو قائمة حقول باعتباره فريداً. إذا تم تعيين قيد متعدد الحقول كمفتاح فريد، يجب أن تكون القيم المدمجة لكل الحقول في الفهرس فريدة، حتى إذا أحتوى سجلين أو أكثر على نفس القيمة في واحد من الحقول.

  • يمكنك استخدام الكلمات المحجوزة في "PRIMARY KEY" لتعيين حقل أو مجموعة الحقول في جدول كمفتاح أساسي. يجب أن تكون كل القيم في المفتاح الأساسي فريدة وليست خالية، وقد يكون هناك مفتاح أساسي واحد فقط لأحد الجداول.

    ملاحظة: لا تقم بتعيين قيد "PRIMARY KEY" في جدول يحتوي بالفعل على مفتاح أساسي؛ إذا فعلت ذلك، يحدث خطأ.

  • يمكنك استخدام الكلمات المحجوزة في "FOREIGN KEY" لتعيين حقل كمفتاح خارجي. إذا كان المفتاح الأساسي للجدول الخارجي يتكون من أكثر من حقل، يجب استخدام تعريف قيد متعدد الحقول، وسرد كافة حقول المراجع واسم الجدول الخارجي وأسماء الحقول المُشار إليها في جدول المفاتيح الخارجية بنفس ترتيب سرد حقول المراجع. إذا كان الحقل أو الحقول المُشار إليها هي مفتاح أساسي للجدول الخارجي، لا يجب تحديد الحقول المُشار إليها. بشكل افتراضي، يعمل مشغل قاعدة البيانات بافتراض أن المفتاح الأساسي للجدول الخارجي هو الحقول المشار إليها.

    تقوم قيود المفاتيح الخارجية بتعريف إجراءات معينة ليتم تنفيذها عند تغيير قيمة مفتاح أساسي مقابل:

  • يمكنك تحديد الإجراءات المطلوب تنفيذها في جدول المفاتيح الخارجية استناداً إلى إجراء مقابل تم تنفيذه في مفتاح أساسي بالجدول الذي يتم تعريف CONSTRAINT فيه. على سبيل المثال، ضع في اعتبارك التعريف التالي لجدول "العملاء":

CREATE TABLE Customers (CustId INTEGER PRIMARY KEY, CLstNm NCHAR VARYING (50))

ضع في اعتبارك التعريف التالي لجدول "الطلبات"، الذي يُعرف علاقة مفتاح خارجي تشير إلى المفتاح الأساسي لجدول "العملاء":

CREATE TABLE Orders (OrderId INTEGER PRIMARY KEY, CustId INTEGER, OrderNotes NCHAR VARYING (255), CONSTRAINT FKOrdersCustId FOREIGN KEY (CustId) REFERENCES Customers ON UPDATE CASCADE ON DELETE CASCADE

ويتم تعريف كل من "ON UPDATE CASCADE" وعبارة "DELETE CASCADE" في المفتاح الخارجي. تشير عبارة "ON UPDATE CASCADE" إلى أنه إذا تم تحديث معرف أحد العملاء (CustId) في جدول "العملاء"، يتم تتالي التحديث عبر جدول الطلبات. سيتم تحديث كل طلب يحتوي على قيمة معرف عميل مقابل تلقائياً بقيمة جديدة. تشير عبارة "ON DELETE CASCADE" إلى أنه إذا تم حذف عميل من جدول "العملاء"، فسيتم أيضاً حذف كافة الصفوف في جدول الطلبات التي تحتوي على نفس قيمة معرف العميل.

ضع في اعتبارك التعريف المختلف التالي لجدول "الطلبات"، واستخدم إجراء SET NULL بدلاً من إجراء CASCADE:

CREATE TABLE Orders (OrderId INTEGER PRIMARY KEY, CustId INTEGER, OrderNotes NCHAR VARYING (255), CONSTRAINT FKOrdersCustId FOREIGN KEY (CustId) REFERENCES Customers ON UPDATE SET NULL ON DELETE SET NULL

تشير عبارة N UPDATE SET NULL إلى أنه إذا تم تحديث معرف أحد العملاء (CustId) في جدول العملاء، فسيتم تلقائياً تعيين قيم المفتاح الخارجي المقابل في جدول "الطلبات" على القيمة "NULL". بالمثل، تشير عبارة ON DELETE SET NULL إلى أنه إذا تم حذف أحد العملاء من جدول "العملاء"، فسيتم تلقائياً تعيين المفاتيح الخارجية المقابلة في جدول "الطلبات" على القيمة "NULL".

لمنع الإنشاء التلقائي لفهارس المفاتيح الخارجية، يمكن استخدام المعدل "NO INDEX". لا يجب استخدام نموذج تعريف المفتاح الخارجي هذا إلا في الحالات التي يتم فيها عادةً تكرار قيم الفهرس الناتجة. إذا كانت القيم الموجودة في فهرس مفتاح خارجي تتكرر بشكل معتاد، يمكن أن يكون استخدام فهرس أقل فعالية من إجراء فحص الجداول. تؤدي صيانة هذا النوع من الفهارس، بصفوف مُدرجة ومحذوفة من الجدول، إلى تراجع الأداء ولا تقدم أي ميزة.



توسيع المهارات
استكشاف التدريب
الحصول على الميزات الجديدة أولاً
الانضمام إلى Office Insider

هل كانت المعلومات مفيدة؟

نشكرك على ملاحظاتك!

شكراً لك على الملاحظات! يبدو أنه من المفيد إيصالك بأحد وكلاء دعم Office لدينا.

×