約束

Delta表支持標準SQL約束管理條款,以確保將數據的質量和完整性自動驗證到表中。當違反約束時,三角洲湖拋出了不變性violationException表示無法添加新數據。

重要的

添加約束會自動升級表Writer協議版本。看表協議版本了解表協議版本及其升級協議版本的含義。

支持兩種類型的約束:

  • 不是無效的:指示特定列中的值不能為null。

  • 查看:指示每個輸入行必須屬於指定的布爾表達式。

不是無效的約束

筆記

  • 降低不是無效的可在Databricks運行時7.0及更高版本中使用。

  • 不是無效的可在Databricks運行時7.4及更高版本中使用。

  • 添加之前不是無效的約束對表,Databricks驗證了所有現有行都滿足約束的所有行。

您指定不是無效的創建表並丟棄時,模式中的約束不是無效的使用改變桌子改變柱子命令。

>創造桌子默認人民10m((IDint不是無效的,,,,細繩,,,,中間名字細繩不是無效的,,,,細繩,,,,性別細繩,,,,出生日期時間戳,,,,SSN細繩,,,,薪水int使用三角洲;>改變桌子默認人民10m改變柱子中間名字降低不是無效的;

你可以加不是無效的約束對現有的三角洲表使用改變桌子改變柱子不是無效的命令。

創造桌子事件((ID,,,,日期細繩,,,,地點細繩,,,,描述細繩使用三角洲;改變桌子事件改變柱子ID不是無效的;

如果指定不是無效的對嵌套在結構內的列的約束,父結構也被限製為不為空。但是,嵌套在數組或地圖類型中的列不接受不是無效的約束。

有關參考信息,請參閱使用表Alter表Arter列

查看約束

筆記

  • 在Databricks運行時7.4及以上可用。

  • 在Databricks運行時7.3 LTS中,您可以將其寫入表格查看定義的約束,但您無法創建查看約束。

你管理查看使用改變桌子添加約束改變桌子降低約束命令。改變桌子添加約束驗證在將約束添加到表中之前,所有現有行都滿足約束。

>創造桌子默認人民10m((IDint,,,,細繩,,,,中間名字細繩,,,,細繩,,,,性別細繩,,,,出生日期時間戳,,,,SSN細繩,,,,薪水int使用三角洲;>改變桌子默認人民10m添加約束datewithinrange查看((出生日期>'1900-01-01');>改變桌子默認人民10m降低約束datewithinrange;

有關參考信息,請參閱Alter表添加約束Alter Table Drop約束

查看約束是輸出中的表屬性描述細節節目tblproperties命令。

>改變桌子默認人民10m添加約束有效查看((ID>1ID<9999999);>描述細節默認人民10m;>節目tblproperties默認人民10m;