数据约束

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

看到的: