本文主要是介绍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南大通用示例:创建 NOVALIDATE 方式的约束的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!