0

使用 db2look、db2move 备份和恢复数据库时如何处理外键约束问题?DDL(使用 db2look 生成)在恢复数据库时创建约束,因此在使用 db2move 导入数据期间发生数据错误。

4

3 回答 3

2

您有几个选项可用于填充具有 RI 约束的空 DB2 数据库:

  • 检查数据库中的所有 FK 依赖项并相应地更改IMPORT语句的顺序,以防止暂时违反 RI 约束。对于具有自引用外键的表,这可能不是一个选项。
  • 不要通过 填充表IMPORT,而是使用忽略表约束的LOAD实用程序。LOAD 会将任何具有约束的目标表(及其下游的依赖表)置于 CHECK PENDING 状态,这将阻止写访问。加载所有表后,对这些表使用SET INTEGRITY命令来验证它们是否满足所有约束。
  • 将 DDL 中的语句重新定位ALTER TABLE到一个单独的脚本,该脚本仅在填充所有表后才运行。
于 2012-09-11T21:25:54.490 回答
0

最好在不同的进程中执行表定义和fk约束定义。为避免在使用 db2move 工具加载数据时进行完整性检查,必须在执行导入/加载过程之后稍后执行 fk 定义。

在运行 db2look 以转储数据库的 ddl 之后。只需将外键约束分离到单独的文件中。如果其他对象也像触发器、sp 或不同文件上的视图,那就更好了。因此,在加载数据之后,立即执行 fk 约束、触发器、sp 和视图。

祝你好运。

于 2013-01-18T08:07:42.340 回答
0
  1. 首先禁用约束,然后执行 db2move import。
  2. 将数据导入表后,重新启用约束

ALTER TABLE ALTER FOREIGN KEY NOT Enforced

然后重新启用:

ALTER TABLE ALTER FOREIGN KEY ENFORMED

谢谢,奈杜

于 2012-09-25T07:26:47.103 回答