SQL0750N的错误指示——检查表的关联依赖

来源:互联网 发布:布袋除尘器算法 编辑:程序博客网 时间:2024/05/20 20:22
#重命名emp_photo遇到SQL0750N的错误[db2inst1@db22 ~]$ db2 "rename table db2inst1.emp_photo to emp_photo_210170725"DB21034E  The command was processed as an SQL statement because it was not a valid Command Line Processor command.  During SQL processing it returned:SQL0750N  The statement failed because the table or column cannot be renamed.  SQLSTATE=42986#重命名employee遇到SQL0750N的错误[db2inst1@db22 ~]$ db2 "rename table db2inst1.employee to employee_210170725"DB21034E  The command was processed as an SQL statement because it was not a valid Command Line Processor command.  During SQL processing it returned:SQL0750N  The statement failed because the table or column cannot be renamed.  SQLSTATE=42986#重命名product成功[db2inst1@db22 ~]$ db2 "rename table db2inst1.product to product_210170725"DB20000I  The SQL command completed successfully.#成功之后再改回来哈[db2inst1@db22 ~]$ db2 "rename table db2inst1.product_210170725 to product"DB20000I  The SQL command completed successfully.

然后根据知识中心的指导看一下为什么不能重命名:

SQL0750N

The statement failed because the table or column cannot be renamed.

解释

基于下列的一个或多个原因,在RENAME语句中的源表不能被重命名:

  • 该表被一个或多个已存在的物化查询表所参考(The table is referenced in one or more existing materialized query tables.
  • 该表 作为一个父表或依赖表被参考约束所牵涉 (The table is involved in one or more referential constraints as a parent or dependent table.
  • 这个表是一个或多个XSR对象的分解目标表 (The table is a target table for decomposition of one or more XSR objects.
  • 这个表是系统运行期间的临时表 (The table is a system-period temporal table.
  • 这个表是一个历史表 (The table is a history table.
  • 数据库管理配置参数auto_reval被设置为DISABLED并且符合下列情形之一的:
    • 表被一个或多个已存在的视图所参考(reference)
    • 表被一个或多个已存在的触发器所参考(reference)。这包括表上的触发器,和在一个触发器的SQL语句中涉及到的表。
    • 表被一个或多个已存在的SQL函数或SQL方法锁参考。
    • 表上有检查约束定义,这包括由生成列引起的检查约束。

The column of the target table in an ALTER TABLE statement cannot be renamed because the target table is a history table.
在一个ALTER TABLE语句中目标表中的列不能被重命名,因为目标表是一个历史表。

User response

如果这个错误属于一个RENAME语句,在执行RENAME语句之前 删除 表上面的 视图,物化查询视图,触发器,SQL函数,SQL方法,检查约束,参考约束,及XSR对象依赖。依赖于该表的对象可以通过查询编目视图来获得。
- 对于依赖于表的视图和物化查询视图,查询 SYSCAT.VIEWDEP 编目视图中 BSCHEMA 和 BNAME列匹配该表的行。
- 对于依赖于表的触发器,查询 SYSCAT.TRIGDEP 编目视图中 BSCHEMA 和 BNAME列匹配该表的行。
- 对于依赖于表的SQL函数和SQL方法,查询 SYSCAT.ROUTINEDEP 编目视图中 BSCHEMA 和 BNAME列匹配该表的行。
- 对于表上的检查约束(check constraints), 查询SYSCAT.CHECKS 编目视图中 TABSCHEMA 和 TABBNAME 列匹配该表的行.
- 对于依赖于该表的参考约束(referential constraints),查询SYSCAT.REFERENCES 编目视图中TABSCHEMA 和 TABBNAME 列匹配该表的行 或 REFTABSCHEMA 和 REFTABNAME 列匹配该表的行。
- 对于依赖于 For XSR objects enabled for decomposition for which the table is a target,
查询SYSCAT.XSROBJECTDEP编目视图中BSCHEMA 和BNAME列匹配该表的记录。

[db2inst1@db22 ~]$ db2 "select > substr(CONSTNAME,1,15) as  CONSTNAME,       > substr(TABSCHEMA ,1,10) as TABSCHEMA ,     > substr(TABNAME,1,15)  as TABNAME  ,                             > substr(REFKEYNAME,1,15) as  REFKEYNAME ,     > substr(REFTABSCHEMA,1,10) as REFTABSCHEMA ,     > substr(REFTABNAME,1,15)  as REFTABNAME   ,                > substr(FK_COLNAMES,1,20) as  FK_COLNAMES,    > substr(PK_COLNAMES,1,20)  as    PK_COLNAMES > from syscat.references"CONSTNAME       TABSCHEMA  TABNAME         REFKEYNAME      REFTABSCHEMA REFTABNAME      FK_COLNAMES          PK_COLNAMES         --------------- ---------- --------------- --------------- ------------ --------------- -------------------- --------------------ROD             DB2INST1   DEPARTMENT      PK_DEPARTMENT   DB2INST1     DEPARTMENT       ADMRDEPT             DEPTNO             RED             DB2INST1   EMPLOYEE        PK_DEPARTMENT   DB2INST1     DEPARTMENT       WORKDEPT             DEPTNO             FK_EMP_PHOTO    DB2INST1   EMP_PHOTO       PK_EMPLOYEE     DB2INST1     EMPLOYEE         EMPNO                EMPNO              FK_EMP_RESUME   DB2INST1   EMP_RESUME      PK_EMPLOYEE     DB2INST1     EMPLOYEE         EMPNO                EMPNO              FK_PROJECT_1    DB2INST1   PROJECT         PK_DEPARTMENT   DB2INST1     DEPARTMENT       DEPTNO               DEPTNO             FK_PROJECT_2    DB2INST1   PROJECT         PK_EMPLOYEE     DB2INST1     EMPLOYEE         RESPEMP              EMPNO              RPP             DB2INST1   PROJECT         PK_PROJECT      DB2INST1     PROJECT          MAJPROJ              PROJNO             RPAP            DB2INST1   PROJACT         PK_PROJECT      DB2INST1     PROJECT          PROJNO               PROJNO             REPAPA          DB2INST1   EMPPROJACT      PK_PROJACT      DB2INST1     PROJACT          PROJNO               PROJNO             RPAA            DB2INST1   ACT             PK_ACT          DB2INST1     ACT              ACTNO                ACTNO              RDE             DB2INST1   DEPARTMENT      PK_EMPLOYEE     DB2INST1     EMPLOYEE         MGRNO                EMPNO              FK_PO_CUST      DB2INST1   PURCHASEORDER   PK_CUSTOMER     DB2INST1     CUSTOMER         CUSTID               CID                  12 record(s) selected.

可以看到有个匹配到emp_photo 的行

一些涉及到的概念细化

物化查询视图 materialized query table

histoty table

检查约束

原创粉丝点击