數據約束

Databricks支持標準SQL約束管理子句。約束條件分為兩類:

  • 強製約束確保自動驗證添加到表中的數據的質量和完整性。

  • 信息主鍵和外鍵約束編碼表中字段之間的關係,不強製執行。

Databricks上的所有約束都需要Delta Lake。

Delta Live Tables有一個類似的概念,稱為期望。看到使用Delta Live Tables管理數據質量

對數據庫的強製約束

當違反約束時,事務將失敗並報錯。支持兩種類型的約束:

  • :表示指定列的值不能為空。

  • 檢查:指定的布爾表達式必須為true。

重要的

如果之前的寫入器版本小於3,則添加約束將自動升級表寫入器協議版本。看到表協議版本控製了解表協議版本控製以及升級協議版本意味著什麼。

設置一個約束在Databricks

請注意

  • 已在Databricks Runtime 7.4及以上版本提供。

你指定創建表時模式中的約束。你可以刪除或添加使用改變表格改變命令。

創建表格people10midINTfirstName字符串middleName字符串字符串性別字符串生日時間戳ssn字符串工資INT使用δ改變表格people10m改變middleName下降改變表格people10m改變ssn

在添加約束到表,Databricks驗證所有現有行是否滿足約束。

如果您指定約束在結構內嵌套的列上時,父結構也必須不為空。不接受嵌套在數組或映射類型中的列約束。

看到創建表[使用]而且修改表

設置一個檢查約束在Databricks

請注意

  • 在Databricks Runtime 7.4及以上版本中可用。

  • 在Databricks Runtime 7.3 LTS中,您可以使用檢查已定義但無法創建的約束檢查約束。

你管理檢查使用改變表格添加約束而且改變表格下降約束命令。改變表格添加約束在將約束添加到表之前,驗證所有現有行是否滿足約束。

創建表格people10midINTfirstName字符串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報表期間不允許使用此子句。還可以向現有表添加約束。

創建表格Tpk1整數pk2整數約束t_pk主要的關鍵pk1pk2));創建表格年代pk整數主要的關鍵fk1、整數fk2整數約束s_t_fk外國關鍵fk1、fk2參考文獻T);

您可以查詢information_schema或使用描述獲取有關如何跨給定目錄應用約束的詳細信息。

看到的: