約束條款

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

預覽

這個特性是在公共預覽

增加了一個信息主鍵或一個信息外鍵的一部分創建表聲明。

檢查約束添加到三角洲湖表使用ALTER TABLE創建了表後。

語法

使用table_constraint條款定義的限製,跨越多個列或單獨的列定義的語法。

table_constraint{(約束的名字]{關鍵(key_column(,])(constraint_option](]|{外國關鍵(foreign_key_column(,])引用parent_table((parent_column(,])](foreign_key_option|constraint_option](]}}}

使用column_constraint子句定義特定於單個列定義約束。

column_constraint{(約束的名字]{關鍵(constraint_option](]|{(外國關鍵]引用parent_table((parent_column(,])](foreign_key_option|constraint_option](]}}}
constraint_option{執行|可延期的|最初遞延|諾爾}foreign_key_option{匹配完整的|更新沒有行動|刪除沒有行動}

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

參數

  • 約束的名字

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

  • 主鍵(key_column […]) [constraint_option] […]

    適用於:檢查標記是的磚的SQL檢查標記是的磚運行時11.1及以上檢查標記是的統一目錄隻

    增加了一個信息主鍵約束。一個表最多隻能有一個主鍵。

    主鍵列是隱式地定義為

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

    • key_column

      科目表的一列。列名稱不能重複。

  • 關鍵(constraint_option][…]

    添加一個列到表中主鍵約束,使用前麵的鍵列定義。

    column_constraint等於table_constraint

    關鍵(key_column)(constraint_option][…]

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

    適用於:檢查標記是的磚的SQL檢查標記是的磚運行時11.1及以上檢查標記是的統一目錄隻

    增加了一個信息外鍵約束(參照完整性)。

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

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

    • foreign_key_column

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

    • parent_table

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

    • parent_column

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

      如果沒有列出父母列,他們所給出的順序指定關鍵定義。

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

      添加一個列外鍵約束的表,使用前麵的外鍵列的定義。

      column_constraint等於table_constraint

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

  • 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)引用);——創建一個表和一個主鍵列和係統生成的名字>創建beplay体育app下载地址(customerid字符串關鍵,的名字字符串);——創建一個表名單柱主鍵外鍵和一個命名的單一列>創建訂單(orderid長整型數字約束orders_pk關鍵,customerid字符串約束orders_beplay体育app下载地址customers_fk引用beplay体育app下载地址);