數據約束
Databricks支持標準SQL約束管理子句。約束條件分為兩類:
強製約束確保自動驗證添加到表中的數據的質量和完整性。
信息主鍵和外鍵約束編碼表中字段之間的關係,不強製執行。
Databricks上的所有約束都需要Delta Lake。
Delta Live Tables有一個類似的概念,稱為期望。看到使用Delta Live Tables管理數據質量.
對數據庫的強製約束
當違反約束時,事務將失敗並報錯。支持兩種類型的約束:
不零
:表示指定列的值不能為空。檢查
:指定的布爾表達式必須為true。
重要的
如果之前的寫入器版本小於3,則添加約束將自動升級表寫入器協議版本。看到表協議版本控製了解表協議版本控製以及升級協議版本意味著什麼。
設置一個不零
約束在Databricks
請注意
集不零
已在Databricks Runtime 7.4及以上版本提供。
你指定不零
創建表時模式中的約束。你可以刪除或添加不零
使用改變表格改變列
命令。
創建表格people10m(idINT不零,firstName字符串,middleName字符串不零,姓字符串,性別字符串,生日時間戳,ssn字符串,工資INT)使用δ;改變表格people10m改變列middleName下降不零;改變表格people10m改變列ssn集不零;
在添加不零
約束到表,Databricks驗證所有現有行是否滿足約束。
如果您指定不零
約束在結構內嵌套的列上時,父結構也必須不為空。不接受嵌套在數組或映射類型中的列不零
約束。
設置一個檢查
約束在Databricks
請注意
在Databricks Runtime 7.4及以上版本中可用。
在Databricks Runtime 7.3 LTS中,您可以使用
檢查
已定義但無法創建的約束檢查
約束。
你管理檢查
使用改變表格添加約束
而且改變表格下降約束
命令。改變表格添加約束
在將約束添加到表之前,驗證所有現有行是否滿足約束。
創建表格people10m(idINT,firstName字符串,middleName字符串,姓字符串,性別字符串,生日時間戳,ssn字符串,工資INT)使用δ;改變表格people10m添加約束dateWithinRange檢查(生日>“1900-01-01”);改變表格people10m下降約束dateWithinRange;
檢查
類的輸出中將約束公開為表屬性描述細節
而且顯示TBLPROPERTIES
命令。
改變表格people10m添加約束validIds檢查(id>1而且id<99999999);描述細節people10m;顯示TBLPROPERTIESpeople10m;
聲明主鍵和外鍵的關係
預覽
此功能已在公共預覽.
請注意
主鍵和外鍵約束在Databricks Runtime 11.1及以上版本中可用。
主鍵和外鍵約束需要Unity Catalog和Delta Lake。
您可以在Unity Catalog表中的字段上使用主鍵和外鍵關係。主鍵和外鍵僅提供信息,不強製執行。外鍵必須引用另一個表中的主鍵。
在創建表時,可以將主鍵和外鍵聲明為表規範子句的一部分。在CTAS報表期間不允許使用此子句。還可以向現有表添加約束。
創建表格T(pk1整數不零,pk2整數不零,約束t_pk主要的關鍵(pk1,pk2));創建表格年代(pk整數不零主要的關鍵,fk1、整數,fk2整數,約束s_t_fk外國關鍵(fk1、,fk2)參考文獻T);
您可以查詢information_schema
或使用描述
獲取有關如何跨給定目錄應用約束的詳細信息。
看到的: