約束條款
適用於:磚的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
目錄。科目表的一列。列名稱不能重複。
主關鍵(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
目錄。外鍵約束,隻有不同的外鍵列的排列是不允許的。
科目表的一列。列名稱不能重複。每一列的數據類型必須匹配的類型匹配
parent_column
。列數必須匹配的數量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下载地址);