暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
南大通用GBase8s SQL常用SQL语句(二十五).docx
132
4页
2次
2021-12-23
免费下载
南大通用 GBase8s 常用 SQL 语句(二十五)
NOVALIDATE 方式下创建外键约束
ALTER TABLE ADD CONSTRAINT 语句可以创建或过滤 NOVALIDATE 方式的外键约束。
NOVALIDATE 约束方式防止数据库服务器在创建引用约束时,验证每一行的外键值是否符
合被引用表中的主键值。
使用此语法创建启用或过滤 NOVALIDATE 方式的外键约束:
ALTER TABLE ADD CONSTRAINT
元素 描述 限制 语法
constrain
t
发布此处约束的名称 在数据库中的索引和约束的名
称中必须唯一
标识
fk_col constraint
的外键列 必须存在于子表 标识
pk_col
被引用表中的外键列 必须存在于被引用表 标识
pk_tab
被引用表的名称 必须存在于当前数据库 标识
table,
synonym
放置
constraint
必须存在于当前数据库 标识
用法
该语法忽略 DISABLED 关键字。因为禁用的约束不会进行违例检查,在这种情况下,
NOVALIDATE 关键字不重要。
如果没有列或列表立即跟随在 REFERENCES 关键字之后,则缺省列(或列组)是 pk_tab
表的主键。如果 pk_tab table synonym 指定同一表,则约束自我引用,并没有缺省的
主键列。
如果您没有声明约束的名称,则数据库服务器为此新约束生成一个标识符,它注册在
sysconstraints sysobjstate 系统目录表中。
ALTER TABLE ADD CONSTRAINT 语句支持引用约束的 NOVALIDATE 方式作为创建或过
滤引用约束时绕过数据完整性检查的机制。
NOVALIDATE 方式可以提高性能的情况
尽管引用约束保护数据完整性,在某些情况下您正要移动到新数据库服务器实例的数据库
表是已知的自由参照完整性违规。对于大表上的外键约束,验证约束所需的时间要十分充
分。如果有数百万行的表正从 OLTP 环境移动至数据仓库环境,则验证目标环境中的外键
可能增加数量级迁移所需的时间。
例如,您可以删除大表上的外键约束,然后在该表迁移到目标表环境之前,立即重新创建
ENABLED NOVALIDATE 方式或 FILTERING NOVALIDATE 方式的约束。重建外键约束
ALTER TABLE ADD CONSTRAINT 操作的花销几乎很小,因为它绕过了对每一行引用
约束的验证。因为 NOVALIDATE 方式不会持续超过创建该约束的 ALTER TABLE 操作,
抵达数据仓库环境中的表带有 ENABLED FILTERING 方式的约束,保护了随后 DML
操作中数据的参照完整性。
使用 NOVALIDATE 关键字的限制
创建外键约束时, NOVALIDATE 关键字仅在 ALTER TABLE ADD CONSTRAINT 语句的
DDL 上下文中有效。 例如,您不能在以下任何 SQL 语句中创建处于 NOVALIDATE 方式
的外键约束:
CREATE TABLE 语句
CREATE TEMP TABLE 语句
SELECT INTO TABLE 语句
如果满足下列条件,则您可以使用 ALTER TABLE ADD CONSTRAINT 语句在现有表上创
建处于 NOVALIDATE 方式的启用约束:
您正在添加的约束是外键约束。如果您在同一 ALTER TABLE 语句中创建多个约
束,那么所有的约束必须都是外键约束。
ALTER TABLE 语句中,NOVALIDATE 关键字只在 ADD CONSTRAINT
FOREIGN KEY 选项中有效。
ALTER TABLE DISABLED 方式下创建的约束是无效的。
如果在以下约束定义的语法上下文中包含 NOVALIDATE 关键字,则 ALTER TABLE 语句
发生错误而失败:
ALTER TABLE ADD COLUMN 语句
ALTER TABLE INIT 语句
ALTER TABLE MODIFY 语句
of 4
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜