GBASE南大通用示例:创建 NOVALIDATE 方式的约束

发布时间:2024年01月19日

?以下 DDL 语句创建了名为 parent 的表且在该表的 c1 列上定义了唯一索引和主键约束:?

CREATE TABLE parent(c1 INT, c2 INT, c3 INT);?

CREATE UNIQUE INDEX idx_parent_c1 ON parent(c1);

ALTER TABLE parent ADD CONSTRAINT

PRIMARY KEY(c1) CONSTRAINT cons_parent_c1;?

以下语句创建了另一个表,名为 child,它的第一列与 parent 表的主键列的数据类型相同,并在 child 表定义主键约束 cons_child_x:?

CREATE TABLE child(x1 INT, x2 INT, x3 VARCHAR(32));?

ALTER TABLE child

ADD CONSTRAINT (FOREIGN KEY(x1)

REFERENCES parent(c1) CONSTRAINT cons_child_x1);?

假设之后的 DML 操作(未显示)向此 parent 表和 child 表填充数据行。在一些点,此工作流程要求数据从它的 OLTP 产品环境移动到另一个处理业务分析应用程序的数据库中。?

如果在这一点,child 表中的数据集包含大量行,则验证 cons_child_x1 引用约束将会是新数据库导入 child 表要花费的显著成本。以下语句删除此约束:

ALTER TABLE child DROP CONSTRAINT cons_child_x1;?

child 表导入到新的环境后,下列语句可以在 child 表上重建一个相同名称的约束,而不用检查每一行的参照完整性违规:?

ALTER TABLE child?

ADD CONSTRAINT (FOREIGN KEY(x1)?

REFERENCES parent(c1)

CONSTRAINT cons_child_x1 NOVALIDATE);?

ALTER TABLE 语句执行完毕之后,新的 cons_child_x1 引用约束在缺省情况下处于 ENABLED 方式。

文章来源:https://blog.csdn.net/weixin_47390342/article/details/135665385
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。