ملاحظة
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على: Databricks SQL
Databricks Runtime
يضيف مفتاحا أساسيا إعلاميا أو مفتاحا خارجيا إعلاميا أو قيد فحص مفروضة إلى جدول Delta Lake موجود.
بناء الجملة
ADD [check_constraint | key_constraint ]
check_constraint
CONSTRAINT name CHECK ( condition ) [ ENFORCED ]
key_constraint
{ [ CONSTRAINT name ]
{
PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ] |
{ FOREIGN KEY (foreign_key_column [, ...] )
REFERENCES parent_table [ ( parent_column [, ...] ] )
[ constraint_option | foreign_key_option ] [...]
}
}
constraint_option
{ NOT ENFORCED |
DEFERRABLE |
INITIALLY DEFERRED |
{ NORELY | RELY } }
foreign_key_option
{ MATCH FULL |
ON UPDATE NO ACTION |
ON DELETE NO ACTION }
للتوافق مع لهجات SQL غير القياسية، يمكنك تحديد ENABLE NOVALIDATE
بدلا من NOT ENFORCED DEFERRABLE INITIALLY DEFERRED
.
المعلمات
check_constraint
تعريف قيد فحص لجدول Delta Lake.
CONSTRAINT
الاسميحدد اسما للقيد. يجب أن يكون الاسم فريدا داخل الجدول. إذا لم يتم توفير أي اسم، فسينشئ Azure Databricks اسما.
CHECK (
condition)
condition
يجب أن يكون تعبيرا محدداBOOLEAN
يرجع .condition
قد تتكون من القيم الحرفية ومعرفات الأعمدة داخل الجدول ودالات SQL أو عوامل التشغيل الحتمية والمضمنة باستثناء:- دالات التجميع
- دوال النافذة التحليلية
- دالات نافذة تحديد المرتبة
- دالات مولد قيم الجدول
كما
condition
يجب ألا يحتوي على أي استعلام فرعي.لكي يتم استيفاء قيد
CHECK
في Azure Databricks، يجب تقييمه إلىtrue
.تتحقق Delta Lake من صحة قيد الفحص مقابل كل من البيانات الجديدة والحالية. إذا انتهك أي صف موجود القيد، رفع خطأ.
key_constraint
ينطبق على:
Databricks SQL
Databricks Runtime 11.3 LTS وما فوق
تعريف مفتاح أساسي إعلامي أو قيد مفتاح خارجي إعلامية لجدول Delta Lake.
CONSTRAINT
الاسميحدد اختياريا اسما للقيد. يجب أن يكون الاسم فريدا داخل المخطط. إذا لم يتم توفير أي اسم، فسينشئ Azure Databricks اسما.
PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ]
ينطبق على:
كتالوج Unity فقط
إضافة قيد مفتاح أساسي إلى جدول Delta Lake. يمكن أن يحتوي الجدول على مفتاح أساسي واحد على الأكثر.
قيود المفتاح الأساسي غير معتمدة للجداول في الكتالوج
hive_metastore
.-
عمود من جدول الموضوع معرف على أنه
NOT NULL
. يجب عدم تكرار أسماء الأعمدة. TIMESERIES
ينطبق على:
Databricks SQL
Databricks Runtime 13.3 LTS وما فوق
يقوم اختياريا بتسمية مكون عمود المفتاح الأساسي على أنه يمثل أوقاتا.
FOREIGN KEY ( foreign_key_column [, ...] ) REFERENCES parent_table [ ( parent_column [, ...] ) ] foreign_key_option
ينطبق على:
كتالوج Unity فقط
إضافة قيد مفتاح خارجي (التكامل المرجعي) إلى جدول Delta Lake.
قيود المفتاح الخارجي غير معتمدة للجداول في الكتالوج
hive_metastore
.-
عمود في جدول الموضوع. يجب عدم تكرار أسماء الأعمدة. يجب أن يتطابق نوع بيانات كل عمود مع نوع المطابقة
parent_column
. يجب أن يتطابق عدد الأعمدة مع عددparent_columns
. يتعذر على مفتاحين خارجيين مشاركة مجموعة متطابقة من أعمدة المفاتيح الخارجية. -
تحديد الجدول الذي يشير إليه المفتاح الخارجي. يجب أن يحتوي الجدول على قيد محدد
PRIMARY KEY
، ويجب أن يكون لديك الامتيازSELECT
على الجدول. -
عمود في الجدول الأصل الذي يعد جزءا من مفتاحه الأساسي. يجب إدراج كافة أعمدة المفتاح الأساسي للجدول الأصل.
إذا لم يتم سرد الأعمدة الأصل، تضمينها في تحديد بالترتيب المحدد في
PRIMARY KEY
التعريف.
لا يسمح بقيود المفتاح الخارجي التي تختلف فقط في تباديل أعمدة المفتاح الخارجي.
-
constraint_option
يسرد خصائص القيود. جميع الخصائص اختيارية ولكنها ضمنية بشكل افتراضي. يمكن تحديد كل خاصية مرة واحدة على الأكثر.
NOT ENFORCED
لا يتخذ Azure Databricks أي إجراء لفرضه للصفوف الموجودة أو الجديدة.
DEFERRABLE
يمكن تأجيل فرض القيد.
INITIALLY DEFERRED
يتم تأجيل فرض القيد.
NORELY
أوRELY
ينطبق على:
Databricks SQL
Databricks Runtime 14.2 والإصدارات الأحدث للقيود
PRIMARY KEY
ينطبق على:
Databricks Runtime 15.4 والإصدارات الأحدث للقيود
FOREIGN KEY
إذا ،
RELY
فقد يستغل Azure Databricks القيد لإعادة كتابة الاستعلامات. تقع على عاتق المستخدم مسؤولية التأكد من استيفاء القيد. قد يؤدي الاعتماد على قيد غير راض إلى نتائج استعلام غير صحيحة.الافتراضي هو
NORELY
.
foreign_key_option
يسرد الخصائص الخاصة بقيود المفتاح الخارجي. جميع الخصائص اختيارية ولكنها ضمنية بشكل افتراضي. يمكن تحديد كل خاصية مرة واحدة على الأكثر.
MATCH FULL
لكي يعتبر القيد صحيحا، يجب أن تكون
NOT NULL
كافة قيم الأعمدة .ON UPDATE NO ACTION
إذا تم تحديث الأصل
PRIMARY KEY
، فإن Azure Databricks لا يتخذ أي إجراء لتقييد التحديث أو تحديث المفتاح الخارجي.ON DELETE NO ACTION
إذا تم حذف الصف الأصل لا يتخذ Azure Databricks أي إجراء لتقييد الإجراء أو تحديث المفتاح الخارجي أو حذف الصف التابع.
هام
لا يفرض Azure Databricks قيود المفتاح الأساسي أو المفتاح الخارجي. قم بتأكيد قيود المفتاح قبل إضافة مفتاح أساسي أو خارجي. قد توفر عملية استيعابك مثل هذا الضمان، أو يمكنك تشغيل عمليات التحقق مقابل بياناتك.
الأمثلة
-- Add a primary key
> CREATE TABLE persons(first_name STRING NOT NULL, last_name STRING NOT NULL, nickname STRING);
> ALTER TABLE persons ADD CONSTRAINT persons_pk PRIMARY KEY(first_name, last_name);
-- Add a foreign key which Databricks does not enforce, but can rely upon.
> CREATE TABLE pets(name STRING, owner_first_name STRING, owner_last_name STRING);
> ALTER TABLE pets ADD CONSTRAINT pets_persons_fk
FOREIGN KEY(owner_first_name, owner_last_name) REFERENCES persons
NOT ENFORCED RELY;
-- Add a check contraint
> ALTER TABLE pets ADD CONSTRAINT pets_name_not_cute_chk CHECK (length(name) < 20);