我必须编写一个sql脚本来修改db2数据库中的许多列类型。除了一个特定的表(使用的脚本和其他表相同(,一切都很顺利,db2总是返回一个我不理解的错误。
这是我的脚本:
ALTER TABLE "TEST"."CLIENT"
ALTER COLUMN C_CODE
SET DATA TYPE CHAR(16 OCTETS);
错误:
SQL错误[44297]:不支持函数(原因代码="21"(。。SQLCODE=-270,SQLSTATE=42997,DRIVER=4.26.14
我试图修改同一表上的其他一些列,但总是收到相同的错误。你有什么想法吗?
提前感谢
错误SQL0270N(sqlcode=-270(有许多可能的原因,具体原因由";原因代码";。
在这种情况下;原因码21";表示:
列不能被删除或具有其长度、数据类型、安全性,可为Null性,或在作为基的表上更改的隐藏属性具体化查询表的表。
Db2 LUW上此sqlcode的文档位于:https://www.ibm.com/docs/en/db2/11.5?topic=messages-sql0250-sql0499#sql0270n
在该页面上搜索SQL0270N,并注意到建议的用户响应:
To drop or alter a column in a table that is a base table for a materialized query table, perform the following steps: 1. Drop the dependent materialized query table. 2. Drop the column of the base table, or alter the length, data type, nullability, or hidden attribute of this column. 3. Re-create the materialized query table.