添加約束子句(Databricks SQL)

預覽

此功能已在公共預覽

向現有Delta Lake表添加主鍵、外鍵或檢查約束。

語法

添加check_constraint|key_constraintcheck_constraint約束的名字檢查條件)執行key_constraint約束的名字主要的關鍵key_column(,)constraint_option|外國關鍵foreign_key_column(,)參考文獻parent_tableparent_column(,)constraint_option|foreign_key_optionconstraint_option執行|可延期的|最初遞延|諾爾foreign_key_option匹配完整的|更新沒有行動|刪除沒有行動

為了兼容非標準SQL方言,可以指定啟用已經而不是執行可延期的最初遞延

參數

  • check_constraint

    為Delta Lake表定義檢查約束。

    • 約束的名字

      指定約束的名稱。名稱在表中必須是唯一的。如果沒有提供名稱,Databricks SQL將生成一個名稱。

    • 檢查條件)

      條件必須是返回布爾值的確定性表達式。

      條件可以由字麵量、表中的列標識符和確定性的內置SQL函數或操作符組成,除了:

      條件不能包含子查詢

      要在Databricks中滿足CHECK約束,必須計算為真正的

      Delta Lake對新數據和現有數據驗證檢查約束的有效性。如果任何現有行違反了約束,將引發一個錯誤。

  • key_constraint

    預覽

    此功能已在公共預覽

    為Delta Lake表定義主鍵或外鍵約束。

    • 約束的名字

      可選地指定約束的名稱。該名稱在模式中必須唯一。如果沒有提供名稱,Databricks SQL將生成一個名稱。

    • 主要的關鍵key_column(,…])constraint_option

      向Delta Lake表添加主鍵約束。一個表最多隻能有一個主鍵。

      類中的表不支持主鍵約束hive_metastore目錄。

    • key_column

      主題表的列,定義為.列名不能重複。

    • 外國關鍵foreign_key_column(,…])參考文獻parent_tableparent_column(,…])foreign_key_option

      向Delta Lake表添加外鍵(引用完整性)約束。

      類中的表不支持外鍵約束hive_metastore目錄。

      • foreign_key_column

        主題表的一列。列名不能重複。每列的數據類型必須與匹配的類型相匹配parent_column.的列數必須與的列數匹配parent_columns.兩個外鍵不能共享相同的外鍵列集。

      • parent_table

        指定外鍵引用的表。表必須有一個已定義的主要的關鍵約束,你必須擁有這個表。

      • parent_column

        父表中的列,是其主鍵的一部分。必須列出父表的所有主鍵列。

        類中給定的順序指定父列主要的關鍵定義。

      隻在外鍵列排列上不同的外鍵約束是不允許的。

    • constraint_option

      列出約束的屬性。所有屬性都是可選的,但默認情況下是隱含的。每個屬性最多隻能指定一次。

      • 執行

        Databricks SQL不會對現有或新行執行強製操作。

      • 可延期的

        約束執行可以延遲。

      • 最初遞延

        約束強製被推遲。

      • 諾爾

        Databricks SQL不利用約束重寫查詢。

    • foreign_key_option

      列出特定於外鍵約束的屬性。所有屬性都是可選的,但默認情況下是隱含的。每個屬性最多隻能指定一次。

      • 匹配完整的

        要認為約束為真,所有列值必須為真

      • 更新沒有行動

        如果父節點主要的關鍵Databricks SQL不采取任何限製更新或更新外鍵的操作。

      • 刪除沒有行動

        如果父行被刪除,Databricks SQL不采取任何操作限製該操作、更新外鍵或刪除依賴行。

重要的

在添加主鍵或外鍵之前,請確認鍵約束。您的攝取過程可以提供這樣的保證,或者您可以對您的數據進行檢查。

例子

——添加一個主鍵>創建表格first_name字符串last_name字符串昵稱字符串);>改變表格添加約束persons_pk主要的關鍵first_namelast_name);—添加外鍵>創建表格寵物的名字字符串owner_first_name字符串owner_last_name字符串);>改變表格寵物添加約束pets_persons_fk外國關鍵owner_first_nameowner_last_name)參考文獻—添加檢查約束>改變表格寵物添加約束pets_name_not_cute_chk檢查長度的名字)<20.);