添加约束条款

预览

这个特性是在公共预览

适用于:检查标记是的砖的SQL检查标记是的砖运行时

增加了一个信息主键,信息外键,或者强制执行现有的三角洲湖表检查约束。

语法

添加(check_constraint|key_constraint]check_constraint约束的名字检查(条件)(执行]key_constraint{(约束的名字]{关键(key_column(,])(constraint_option](]|{外国关键(foreign_key_column(,])引用parent_table((parent_column(,]])(constraint_option|foreign_key_option](]}}constraint_option{执行|可延期的|最初递延|诺尔}foreign_key_option{匹配完整的|更新没有行动|删除没有行动}

为兼容标准的SQL方言可以指定启用已经而不是执行可延期的最初递延

参数

  • check_constraint

    定义了一个三角洲湖表检查约束。

    • 约束的名字

      指定的名称限制。在表的名称必须是惟一的。如果没有提供名字砖将生成一个。

    • 检查(条件)

      条件必须是一个确定性表达式返回一个布尔值。

      条件可能是由文字、表内列标识符,和确定性,内置的SQL函数或运营商除了:

      条件必须不包含任何子查询

      检查约束是满意的砖必须评估真正的

      三角洲湖验证的有效性检查约束对新的和现有的数据。如果任何现有行违反约束,它会抛出一个错误。

  • key_constraint

    预览

    这个特性是在公共预览

    适用于:检查标记是的砖的SQL检查标记是的砖运行时11.1及以上

    定义了一个信息主键或信息三角洲湖表的外键约束。

    • 约束的名字

      (可选)指定约束的名称。内的名称必须是唯一的模式。如果没有提供名字砖将生成一个。

    • 关键(key_column(,…])constraint_option

      适用于:检查标记是的统一目录只

      添加一个主键约束到三角洲湖表。一个表最多只能有一个主键。

      主键约束的表不支持hive_metastore目录。

    • key_column

      一列的表定义为主题。列名称不能重复。

    • 外国关键(foreign_key_column(,…])引用parent_table((parent_column(,…])]foreign_key_option

      适用于:检查标记是的统一目录只

      添加一个外键约束(参照完整性)三角洲湖表。

      不支持外键约束的表hive_metastore目录。

      • foreign_key_column

        科目表的一列。列名称不能重复。每一列的数据类型必须匹配的类型匹配parent_column。列数必须匹配的数量parent_columns。两个外键不能共享相同的外键列。

      • parent_table

        指定表的外键是指。表必须有一个定义关键约束的,你必须自己的那张桌子。

      • parent_column

        列在父表中主键的一部分。所有的父表的主键列必须列出。

        如果父母列没有列出它们隐含指定的顺序给出关键定义。

      外键约束,只有不同的外键列的排列是不允许的。

    • constraint_option

      列表的属性约束。默认情况下所有属性都是可选的,但暗示。每个属性最多可以指定一次。

      • 执行

        砖不采取任何行动执行现有或新行。

      • 可延期的

        约束可以延期执行。

      • 最初递延

        约束执法是延迟的。

      • 诺尔

        砖不利用约束来重写查询。

    • foreign_key_option

      列出了具体的外键约束属性。默认情况下所有属性都是可选的,但暗示。每个属性最多可以指定一次。

      • 匹配完整的

        约束的所有列值必须被认为是如此

      • 更新没有行动

        如果父关键更新数据砖不采取任何行动限制更新或更新的外键。

      • 删除没有行动

        如果父行被删除数据砖不采取任何行动限制行动,更新外键或删除相关的行。

重要的

砖不执行主键或外键约束。确认键约束之前添加一个主键或外键。摄取过程可以提供这样的保证,或者您可以对您的数据运行检查。

例子

——添加一个主键>创建(first_name字符串,last_name字符串,昵称字符串);>改变添加约束persons_pk关键(first_name,last_name);——添加一个外键>创建宠物(的名字字符串,owner_first_name字符串,owner_last_name字符串);>改变宠物添加约束pets_persons_fk外国关键(owner_first_name,owner_last_name)引用;——添加一个检查contraint>改变宠物添加约束pets_name_not_cute_chk检查(长度(的名字)<20.);