【发布时间】:2021-10-30 02:03:30
【问题描述】:
使用db2look、db2move备份和恢复数据库时如何处理外键约束问题? DDL(使用 db2look 生成)在恢复数据库时创建约束,因此在使用 db2move 导入数据期间发生数据错误。
【问题讨论】:
使用db2look、db2move备份和恢复数据库时如何处理外键约束问题? DDL(使用 db2look 生成)在恢复数据库时创建约束,因此在使用 db2move 导入数据期间发生数据错误。
【问题讨论】:
您有几个选项可用于填充具有 RI 约束的空 DB2 数据库:
IMPORT 语句的顺序,以防止暂时违反 RI 约束。对于具有自引用外键的表,这可能不是一个选项。IMPORT 填充表,而是使用忽略表约束的LOAD 实用程序。 LOAD 会将任何具有约束的目标表(及其下游的依赖表)置于 CHECK PENDING 状态,这将阻止写访问。加载所有表后,对这些表使用 SET INTEGRITY 命令来验证它们是否满足所有约束。ALTER TABLE 语句重新定位到单独的脚本中,该脚本仅在填充所有表后才会运行。【讨论】:
ALTER TABLE ALTER FOREIGN KEY NOT Enforced
然后重新启用:
ALTER TABLE ALTER FOREIGN KEY ENFOCED
谢谢, 耐都
【讨论】:
最好在不同的进程中执行表定义和fk约束定义。 为了避免在使用 db2move 工具加载数据时进行完整性检查,fk 定义必须在您执行导入/加载过程之后执行。
在运行 db2look 转储数据库的 ddl 之后。只需将外键约束分离到单独的文件中。如果其他对象也像触发器、sp 或不同文件上的视图,那就更好了。因此,在加载数据后,立即执行 fk 约束、触发器、sp 和视图。
祝你好运。
【讨论】: