给出以下命令后
set integrity for table_name off
我遇到以下错误
DB2 SQL错误:SQLCODE:-290,SQLSTATE:55039,SQLERRMC:null消息: 表空间访问
这可能是什么原因?
我想要实现的是:我想暂时禁用约束,以便可以重命名实际表并使用实际表名创建一个新表。然后,我将启用约束。在这方面对指针的任何帮助将不胜感激。
答案 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
是一个不同的问题,可能是由其他原因引起的。