使用此选项将一个或多个约束指定到现有表中的一个列或一组列。
它与 CREATE TABLE 语句的多列约束格式极其类似,但是可选的 INDEX DISABLED 关键字在
CREATE TABLE 语句定义的外键约束中无效(返回错误)。
在 CREATE TABLE 语句中,ALTER TABLE 的多列约束格式与单列约束格式不同之处在于,当
您指定外键约束时,在 REFERENCES 子句之前需要 FOREIGN KEY 关键字。此外,如它的名称
所指,多列约束格式可指定列列表作为新约束的范围,此语法同样对单列有效。
有关 INDEX DISABLED 关键字选项的更多信息,请参阅 在外键的定义中使用 INDEX
DISABLED 关键字 。
多列约束具有以下基数和大小限制:
⚫ 可包含的列名不多于 16 个。
⚫ 最该列列表的总长度的最大值依赖于页大小,计算公式为:
MAXLength = (((PageSize - 93)/5) -1)
o 对于 2K 的页大小,总长度不能超过 390 字节。
o 对于 16K 的页大小,总长度不能超过 3257 字节。
此处的反斜杠( / )符号代表整除。
如果您在同一列上定义了 NOT NULL 约束和 NULL 约束或在缺省值为 NULL 的列上定义了
NOT NULL 约束,则该语句失败并返回错误。
您不能在 LIST 、MULTISET 、SET 或 IDSSECURITYLABEL 数据类型的列上定义 NULL 约
束。
如果一组列中有一列存储了加密数据,则 GBase 8s 无法强制执行此组列的约束。您可以发布此约
束的名称并将用 约束定义 设置它的方式。
如果 ALTER TABLE ADD CONSTRAINT 语句在同一表中了定义多个引用约束,则每个约束需要
它自己所有的 REFERENCES 子句,因此每个单独的约束可指定(或忽略)类似 ON DELETE
CASCADE 的选项,而不是将其应用至所有的约束。
如果数据库服务器在同一非 opaque 列或列组上隐式地创建了索引作为引用约束,则会自动计算指
定列的分别存储统计或多列约束的主列。
这些分布存储统计相当于 STATISTICS 语句在 HIGH 方式中创建的分布,且当其作为创建了新约
束的表查询计划时,可用于查询优化器。有关在现有表上创建索引或约束时计算分布存储的其它信
息,请参阅 CREATE INDEX 语句中自动计算分布统计信息章节中的描述。
多列约束格式
最新推荐文章于 2024-09-28 20:04:23 发布
本文介绍了如何在数据库中使用ALTER TABLE语句添加多列约束,特别是外键约束的细节。强调了INDEXDISABLED关键字在CREATE TABLE语句中外键约束中的无效性,并详细说明了多列约束的基数和大小限制。同时,提到了在存在加密数据的列上约束的执行问题,以及在定义多个引用约束时每个约束独立指定选项的必要性。还讨论了数据库服务器如何在引用约束中自动创建索引及其对查询优化的影响。

3931

被折叠的 条评论
为什么被折叠?



