数据约束
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
或使用描述
获取有关如何跨给定目录应用约束的详细信息。
看到的: