Db2 如何重命名数据库中具有引用完整性的表?

Db2 如何重命名数据库中具有引用完整性的表?,db2,db2-luw,Db2,Db2 Luw,在发出下面的命令之后 set integrity for table_name off 我得到以下错误 DB2 SQL错误:SQLCODE:-290,SQLSTATE:55039,SQLERRMC:null消息: 表空间访问 可能的原因是什么 我想实现的是:我想暂时禁用约束,以便可以重命名实际表并使用实际表名创建一个新表。然后我将启用约束。在这方面,任何指针的帮助都将不胜感激。设置完整性不会“禁用约束” 根据手册页面,关闭完整性 指定表处于集完整性挂起状态。对于处于set integrity

在发出下面的命令之后

set integrity for table_name off
我得到以下错误

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

可能的原因是什么


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

设置完整性
不会“禁用约束”

根据手册页面,
关闭完整性

指定表处于集完整性挂起状态。对于处于set integrity pending状态的表,只允许非常有限的活动

当您尝试重命名带有约束的表时,会得到SQL0750N,它表示:

如果错误与RENAME语句有关,请删除视图、物化查询 表、触发器、SQL函数、SQL方法、检查约束、引用约束、, 基于表达式的索引,或在发出 重命名语句。依赖于表的对象可以通过查询 目录

也就是说,您必须删除约束,重命名表,然后重新添加约束。这就是它的工作方式。类似于
ADMIN\u MOVE\u TABLE
的操作将删除并重新创建所需的约束,但是在实际移动表数据之前,如果您只是想进行重命名,那么这可能不是一个好主意。许多GUI工具(如IBMDataStudio)将为您生成所需的DROP、RENAME和CREATE语句


您当前出现的
SQL0290N表空间访问不允许的错误
是另一个问题,可能是由于其他原因造成的。

您考虑过使用别名(或视图)等更便宜的方法吗?