如何重命名具有参照完整性的数据库中的表?

时间:2018-07-19 05:41:37

标签: db2 db2-luw

给出以下命令后

set integrity for table_name off

我遇到以下错误

  

DB2 SQL错误:SQLCODE:-290,SQLSTATE:55039,SQLERRMC:null消息:   表空间访问

这可能是什么原因?

我想要实现的是:我想暂时禁用约束,以便可以重命名实际表并使用实际表名创建一个新表。然后,我将启用约束。在这方面对指针的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

set integrity不会“禁用约束”。

根据SET INTEGRITY statement手册页,set integrity off

  

指定将表置于集合完整性挂起状态。处于集完整性未决状态的表仅允许非常有限的活动。

如果您尝试使用约束重命名表,则会得到SQL0750N,它说:

  

如果错误与RENAME语句有关,请删除视图,具体化查询   表,触发器,SQL函数,SQL方法,检查约束,引用约束,   基于表达式的索引,或依赖于表的XSR对象,然后发出   RENAME声明。可以通过查询查询来确定依赖于表的对象   目录。

即您必须删除约束,重命名表,然后重新添加约束。这就是它的工作方式。像ADMIN_MOVE_TABLE之类的东西将删除并重新创建所需的约束,但是在实际物理移动表数据之前,如果只是想进行重命名,可能不是一个好主意。许多GUI收费(例如IBM Data Studio)将为您生成所需的DROP,RENAME,CREATE语句。

您当前遇到的错误SQL0290N Table space access is not allowed是一个不同的问题,可能是由其他原因引起的。