約束
三角洲表支持標準的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>1和id<99999999);>描述細節默認的。people10m;>顯示TBLPROPERTIES默認的。people10m;