عبارة CONSTRAINT

ينطبق على: وضع علامة Databricks SQL وضع علامة Databricks Runtime

إضافة مفتاح أساسي إعلامي أو مفتاح خارجي إعلامية كجزء من عبارة CREATE TABLE أو CREATE MATERIALIZED VIEW .

لإضافة قيد فحص إلى جدول Delta Lake، استخدم ALTER TABLE بعد إنشاء الجدول.

بناء الجملة

table_constraint استخدم عبارة لتعريف القيود التي تمتد عبر أعمدة متعددة أو لفصل بناء الجملة بعيدا عن تعريف العمود.

table_constraint
   { [ CONSTRAINT name ]
     { PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ] |
       { FOREIGN KEY ( foreign_key_column [, ...] )
         REFERENCES parent_table [ ( parent_column [, ...] ) ]
         [ foreign_key_option | constraint_option ] [...]
       }
     }
   }

column_constraintاستخدم عبارة لتعريف القيود الخاصة بتعريف عمود واحد.

column_constraint
  { [ CONSTRAINT name ]
    { PRIMARY KEY [ constraint_option ] [...] |
      { [ FOREIGN KEY ]
        REFERENCES parent_table [ ( parent_column [, ...] ) ]
        [ foreign_key_option | constraint_option ] [...]
      }
    }
  }
constraint_option
    { NOT ENFORCED |
      DEFERRABLE |
      INITIALLY DEFERRED |
      { RELY | NORELY } }

foreign_key_option
    { MATCH FULL |
      ON UPDATE NO ACTION |
      ON DELETE NO ACTION }

للتوافق مع لهجات SQL غير القياسية، يمكنك تحديد ENABLE NOVALIDATE بدلا من NOT ENFORCED DEFERRABLE INITIALLY DEFERRED.

المعلمات

  • CONSTRAINTالاسم

    يحدد اختياريا اسما للقيد. يجب أن يكون الاسم فريدا داخل المخطط. إذا لم يتم توفير أي اسم، فسينشئ Azure Databricks اسما.

  • PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ]

    ينطبق على:وضع علامة Databricks SQL وضع علامة Databricks Runtime 11.3 LTS وما فوق وضع علامة كتالوج Unity فقط

    إضافة قيد مفتاح أساسي إعلامي إلى الجدول أو طريقة العرض المجسدة. يمكن أن يحتوي الجدول أو طريقة العرض المجسدة على مفتاح أساسي واحد على الأكثر.

    يتم تعريف أعمدة المفتاح الأساسي ضمنيا على أنها NOT NULL.

    قيود المفتاح الأساسي غير معتمدة للجداول في الكتالوج hive_metastore .

    • key_column

      عمود جدول الموضوع أو طريقة العرض المجسدة. يجب عدم تكرار أسماء الأعمدة.

    • TIMESERIES

      ينطبق على: وضع علامة Databricks SQL وضع علامة Databricks Runtime 13.3 LTS وما فوق

      يقوم اختياريا بتسمية مكون عمود المفتاح الأساسي على أنه يمثل أوقاتا.

  • PRIMARY KEY [ constraint_option ] [...]

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

    وهذا column_constraint يعادل table_constraint

    PRIMARY KEY (key_column) [ constraint_option ] [...]

  • FOREIGN KEY (foreign_key_column [, ...] ) REFERENCES parent_table [ ( parent_column [, ...] ) ] foreign_key_option

    ينطبق على:وضع علامة Databricks SQL وضع علامة Databricks Runtime 11.3 LTS وما فوق وضع علامة كتالوج Unity فقط

    إضافة قيد مفتاح خارجي معلوماتي (التكامل المرجعي) إلى الجدول أو طريقة العرض المجسدة.

    قيود المفتاح الخارجي غير معتمدة للجداول في الكتالوج hive_metastore .

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

    • foreign_key_column

      عمود جدول الموضوع أو طريقة العرض المجسدة. يجب عدم تكرار أسماء الأعمدة. يجب أن يتطابق نوع بيانات كل عمود مع نوع المطابقة parent_column. يجب أن يتطابق عدد الأعمدة مع عدد الأعمدة parent_column. يتعذر على مفتاحين خارجيين مشاركة مجموعة متطابقة من أعمدة المفاتيح الخارجية.

    • parent_table

      تحديد الجدول أو طريقة العرض المجسدة التي يشير إليها المفتاح الخارجي. يجب أن يحتوي الجدول على قيد محدد PRIMARY KEY ، ويجب أن يكون لديك الامتياز SELECT على الجدول.

    • parent_column

      عمود في الجدول الأصل أو طريقة العرض المجسدة التي تعد جزءا من مفتاحه الأساسي. يجب إدراج كافة أعمدة المفتاح الأساسي للجدول الأصل أو طريقة العرض المجسدة.

      إذا لم تكن الأعمدة الأصل مدرجة، يتم تحديدها بالترتيب المحدد في PRIMARY KEY التعريف.

    • FOREIGN KEY REFERENCES parent_table [ ( parent_column ) ] foreign_key_option

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

      وهذا column_constraint يعادل table_constraint

      FOREIGN KEY ( foreign_key_column ) REFERENCES parent_table [ ( parent_column ) ] foreign_key_option

  • 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 قيود المفتاح الأساسي أو المفتاح الخارجي. قم بتأكيد قيود المفتاح قبل إضافة مفتاح أساسي أو خارجي. قد توفر عملية استيعابك مثل هذا الضمان، أو يمكنك تشغيل عمليات التحقق مقابل بياناتك.

الأمثلة

-- Create a table with a primary key
> CREATE TABLE persons(first_name STRING NOT NULL, last_name STRING NOT NULL, nickname STRING,
                       CONSTRAINT persons_pk PRIMARY KEY(first_name, last_name));

-- create a table with a foreign key
> CREATE TABLE pets(name STRING, owner_first_name STRING, owner_last_name STRING,
                    CONSTRAINT pets_persons_fk FOREIGN KEY (owner_first_name, owner_last_name) REFERENCES persons);

-- Create a table with a single column primary key and system generated name
> CREATE TABLE customers(customerid STRING NOT NULL PRIMARY KEY, name STRING);

-- Create a table with a names single column primary key and a named single column foreign key
> CREATE TABLE orders(orderid BIGINT NOT NULL CONSTRAINT orders_pk PRIMARY KEY,
                      customerid STRING CONSTRAINT orders_customers_fk REFERENCES customers);