约束条款
适用于:砖的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
目录。科目表的一列。列名称不能重复。
主关键(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
目录。外键约束,只有不同的外键列的排列是不允许的。
科目表的一列。列名称不能重复。每一列的数据类型必须匹配的类型匹配
parent_column
。列数必须匹配的数量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引用客户);