عبارة CONSTRAINT

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

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

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

بناء الجملة

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

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

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

CONSTRAINT name
{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" لتعيين حقل أو مجموعة الحقول في جدول كمفتاح أساسي. يجب أن تكون كل القيم في المفتاح الأساسي فريدة وليست Null، ومن الممكن وجود مفتاح أساسي واحد فقط لأحد الجداول.

    ملاحظة: لا تقم بتعيين قيد ‏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

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

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



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

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

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

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

×