db2 - 如何重命名数据库中具有引用完整性维护的表?
问题描述
给出以下命令后
set integrity for table_name off
我收到以下错误
DB2 SQL 错误:SQLCODE: -290, SQLSTATE: 55039, SQLERRMC: null 消息:表空间访问
这可能是什么原因?
我想要实现的是:我想暂时禁用约束,以便我可以重命名实际表并使用实际表名创建一个新表。然后我将启用约束。在这方面的指针的任何帮助将不胜感激。
解决方案
set integrity
不会“禁用约束”。
根据SET INTEGRITY 语句手册页,set integrity off
指定将表置于设置完整性暂挂状态。在设置完整性暂挂状态的表上只允许非常有限的活动。
当你尝试用约束重命名一个表时,你会得到 SQL0750N,它说:
如果错误与 RENAME 语句有关,请在发出 RENAME 语句之前删除依赖于表的视图、具体化查询表、触发器、SQL 函数、SQL 方法、检查约束、引用约束、基于表达式的索引或 XSR 对象。可以通过查询目录来确定依赖于表的对象。
即你必须删除约束,重命名表,然后重新添加约束。这就是它的工作方式。类似的东西ADMIN_MOVE_TABLE
会删除和重新创建所需的约束,但是直到实际物理移动表数据,所以如果你只是想重命名可能不是一个好主意。许多 GUI 收费(例如 IBM Data Studio)将为您生成所需的 DROP、RENAME、CREATE 语句。
您当前遇到的错误SQL0290N Table space access is not allowed
是一个不同的问题,并且是由于其他原因造成的。
推荐阅读
- javascript - 在 api 响应中看不到但在 postgres 表中看到的旧数据
- reactjs - 使用 React Redux 新钩子的最佳实践?
- javascript - Kendo Grid Destroy 命令将整个 HTML 页面发送到模式响应 - 未捕获类型错误:无法读取未定义的属性“结果”
- mysql - 如何在 SQL 中将不是特定值集的所有值设置为“其他”
- ruby-on-rails - Kristin PDF to HTML 结果转化为变量
- javascript - 使用 React 的 GraphQL 查询到数组列表?
- unity3d - 使用统一 MLAPI(多人游戏)的场景管理
- javascript - 从 JSON 字符串中提取特定数据
- vue.js - 如何在 vue-cli 生成的 vue.config.js 中设置 mini-css-extract-plugin 的配置
- laravel - SQLSTATE[HY000] [2002] 连接被拒绝 |