添加約束條款

預覽

這個特性是在公共預覽

適用於:檢查標記是的磚的SQL檢查標記是的磚運行時

增加了一個信息主鍵,信息外鍵,或者強製執行現有的三角洲湖表檢查約束。

語法

添加(check_constraint|key_constraint]check_constraint約束的名字檢查(條件)(執行]key_constraint{(約束的名字]{關鍵(key_column(,])(constraint_option](]|{外國關鍵(foreign_key_column(,])引用parent_table((parent_column(,]])(constraint_option|foreign_key_option](]}}constraint_option{執行|可延期的|最初遞延|諾爾}foreign_key_option{匹配完整的|更新沒有行動|刪除沒有行動}

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

參數

  • check_constraint

    定義了一個三角洲湖表檢查約束。

    • 約束的名字

      指定的名稱限製。在表的名稱必須是惟一的。如果沒有提供名字磚將生成一個。

    • 檢查(條件)

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

      條件可能是由文字、表內列標識符,和確定性,內置的SQL函數或運營商除了:

      條件必須不包含任何子查詢

      檢查約束是滿意的磚必須評估真正的

      三角洲湖驗證的有效性檢查約束對新的和現有的數據。如果任何現有行違反約束,它會拋出一個錯誤。

  • key_constraint

    預覽

    這個特性是在公共預覽

    適用於:檢查標記是的磚的SQL檢查標記是的磚運行時11.1及以上

    定義了一個信息主鍵或信息三角洲湖表的外鍵約束。

    • 約束的名字

      (可選)指定約束的名稱。內的名稱必須是唯一的模式。如果沒有提供名字磚將生成一個。

    • 關鍵(key_column(,…])constraint_option

      添加一個主鍵約束到三角洲湖表。一個表最多隻能有一個主鍵。

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

    • key_column

      一列的表定義為主題。列名稱不能重複。

    • 外國關鍵(foreign_key_column(,…])引用parent_table((parent_column(,…])]foreign_key_option

      添加一個外鍵約束(參照完整性)三角洲湖表。

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

      • foreign_key_column

        科目表的一列。列名稱不能重複。每一列的數據類型必須匹配的類型匹配parent_column。列數必須匹配的數量parent_columns。兩個外鍵不能共享相同的外鍵列。

      • parent_table

        指定表的外鍵是指。表必須有一個定義關鍵約束的,你必須自己的那張桌子。

      • parent_column

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

        如果父母列沒有列出它們隱含指定的順序給出關鍵定義。

      外鍵約束,隻有不同的外鍵列的排列是不允許的。

    • constraint_option

      列表的屬性約束。默認情況下所有屬性都是可選的,但暗示。每個屬性最多可以指定一次。

      • 執行

        磚不采取任何行動執行現有或新行。

      • 可延期的

        約束可以延期執行。

      • 最初遞延

        約束執法是延遲的。

      • 諾爾

        磚不利用約束來重寫查詢。

    • foreign_key_option

      列出了具體的外鍵約束屬性。默認情況下所有屬性都是可選的,但暗示。每個屬性最多可以指定一次。

      • 匹配完整的

        約束的所有列值必須被認為是如此

      • 更新沒有行動

        如果父關鍵更新數據磚不采取任何行動限製更新或更新的外鍵。

      • 刪除沒有行動

        如果父行被刪除數據磚不采取任何行動限製行動,更新外鍵或刪除相關的行。

重要的

磚不執行主鍵或外鍵約束。確認鍵約束之前添加一個主鍵或外鍵。攝取過程可以提供這樣的保證,或者您可以對您的數據運行檢查。

例子

——添加一個主鍵>創建(first_name字符串,last_name字符串,昵稱字符串);>改變添加約束persons_pk關鍵(first_name,last_name);——添加一個外鍵>創建寵物(的名字字符串,owner_first_name字符串,owner_last_name字符串);>改變寵物添加約束pets_persons_fk外國關鍵(owner_first_name,owner_last_name)引用;——添加一個檢查contraint>改變寵物添加約束pets_name_not_cute_chk檢查(長度(的名字)<20.);