約束

三角洲表支持標準的SQL約束管理條款,確保質量和完整性的數據添加到表自動驗證。當違反條件,δ拋出一個湖InvariantViolationException信號,新數據不能被添加。

重要的

添加一個約束表作家協議版本自動升級。看到表協議版本理解表協議版本和升級協議版本意味著什麼。

支持兩種類型的約束:

  • :表明特定列中的值不能為空。

  • 檢查:表明指定的布爾表達式必須對每個輸入行。

請注意

下麵的代碼示例使用兩級的一些命名空間符號組成的一個模式(也稱為一個數據庫)和一個表或視圖(例如,default.people10m)。使用這些示例統一目錄,更換二級與三級統一目錄名稱空間名稱空間符號組成的一個目錄,模式和表或視圖(例如,main.default.people10m)。有關更多信息,請參見使用三級名稱空間符號統一目錄

約束

請注意

  • 下降有磚運行時7.0及以上。

  • 有磚運行時7.4及以上。

  • 之前添加一個約束一個表,滿足約束磚確認所有現有的行。

你指定約束模式中當你創建一個表和下降限製使用改變改變命令。

>創建默認的people10m(idINT,firstName字符串,middleName字符串,字符串,性別字符串,生日時間戳,ssn字符串,工資INT)使用δ;>改變默認的people10m改變middleName下降;

您可以添加限製到一個現有的差值表使用改變改變命令。

創建事件(id,日期字符串,位置字符串,描述字符串)使用δ;改變事件改變id;

如果你指定一個約束列嵌套在一個結構體,父結構也約束不空。然而,列嵌套數組或地圖類型不接受約束。

供參考的信息,請參閱創建表使用改變改變列的表

檢查約束

請注意

  • 在磚運行時7.4及以上。

  • 在磚運行時7.3 LTS表你可以寫檢查約束定義但你不能創建檢查約束。

你管理檢查限製使用改變添加約束改變下降約束命令。改變添加約束驗證所有現有行滿足約束添加到表之前。

>創建默認的people10m(idINT,firstName字符串,middleName字符串,字符串,性別字符串,生日時間戳,ssn字符串,工資INT)使用δ;>改變默認的people10m添加約束dateWithinRange檢查(生日>“1900-01-01”);>改變默認的people10m下降約束dateWithinRange;

供參考的信息,請參閱ALTER TABLE添加約束ALTER TABLE下降約束

檢查約束表屬性的輸出描述細節顯示TBLPROPERTIES命令。

>改變默認的people10m添加約束validIds檢查(id>1id<99999999);>描述細節默認的people10m;>顯示TBLPROPERTIES默認的people10m;