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

 以下 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 方式。

你可能感兴趣的:(数据库,GBASE南大通用,GBASE)