约束条款

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

预览

这个特性是在公共预览

增加了一个信息主键或一个信息外键的一部分创建表声明。

检查约束添加到三角洲湖表使用ALTER TABLE创建了表后。

语法

使用table_constraint条款定义的限制,跨越多个列或单独的列定义的语法。

table_constraint{(约束的名字]{关键(key_column(,])(constraint_option](]|{外国关键(foreign_key_column(,])引用parent_table((parent_column(,])](foreign_key_option|constraint_option](]}}}

使用column_constraint子句定义特定于单个列定义约束。

column_constraint{(约束的名字]{关键(constraint_option](]|{(外国关键]引用parent_table((parent_column(,])](foreign_key_option|constraint_option](]}}}
constraint_option{执行|可延期的|最初递延|诺尔}foreign_key_option{匹配完整的|更新没有行动|删除没有行动}

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

参数

  • 约束的名字

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

  • 主键(key_column […]) [constraint_option] […]

    适用于:检查标记是的砖的SQL检查标记是的砖运行时11.1及以上检查标记是的统一目录只

    增加了一个信息主键约束。一个表最多只能有一个主键。

    主键列是隐式地定义为

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

    • key_column

      科目表的一列。列名称不能重复。

  • 关键(constraint_option][…]

    添加一个列到表中主键约束,使用前面的键列定义。

    column_constraint等于table_constraint

    关键(key_column)(constraint_option][…]

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

    适用于:检查标记是的砖的SQL检查标记是的砖运行时11.1及以上检查标记是的统一目录只

    增加了一个信息外键约束(参照完整性)。

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

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

    • foreign_key_column

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

    • parent_table

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

    • parent_column

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

      如果没有列出父母列,他们所给出的顺序指定关键定义。

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

      添加一个列外键约束的表,使用前面的外键列的定义。

      column_constraint等于table_constraint

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

  • 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)引用);——创建一个表和一个主键列和系统生成的名字>创建客户(customerid字符串关键,的名字字符串);——创建一个表名单柱主键外键和一个命名的单一列>创建订单(orderid长整型数字约束orders_pk关键,customerid字符串约束orders_customers_fk引用客户);