创建登台表时可能会发生此错误。在这种情况下,该错误适用于在与登台表相关
联的具体化查询表的定义中使用的查询。
因为该语句违反下列原因码所指示的限制,所以不能对其进行处理:
1
每个选择列表元素必须有名称。
2
全查询不能引用下列任何对象类型:
具体化查询表
登台表
声明的全局临时表
类型表
系统目录表
违反任何具体化查询表限制的视图
受保护的表
使用 CREATE NICKNAME 或 ALTER NICKNAME 语句中的 DISALLOW
CACHING 子句创建的昵称
直接或间接依赖于受保护表的视图
3
全查询不能包含下列数据类型的任何列引用或表达式:
LOB、LONG、DATALINK、XML、引用、用户定义的结构化类型或基于
这些数据类型的任何单值类型
4
全查询不能包含符合以下条件的任何列引用、表达式或函数:
取决于数据的物理特征,例如 DBPARTITIONNUM、HASHEDVALUE、RID
_BIT 和 RID
取决于对数据所作的更改,例如行更改表达式或 ROW CHANGE
TIMESTAMP 列
被定义为 EXTERNAL ACTION
被定义为 LANGUAGE SQL、CONTAINS SQL、READS SQL DATA 或
MODIFIES SQL DATA
5
当指定 REPLICATED 时,下列限制适用:
不允许聚集函数和 GROUP BY 子句
具体化查询表只能引用单个表;即,它不能包括连接、并集或子查询
不能指定 PARTITIONING KEY 子句
6
指定 REFRESH IMMEDIATE 时,全查询不能包含:
对昵称的引用
SELECT DISTINCT
对专用寄存器的引用
对全局变量的引用
不具确定性的函数
OLAP 函数、抽样函数和文本函数
使用聚集函数的结果的任何表达式
没有还包含 GROUP BY 子句的全查询的聚集函数
递归公共表表达式
子查询
7
当指定 REFRESH IMMEDIATE 时:
具体化查询表不能包含重复行
当指定 GROUP BY 子句时,所有 GROUP BY 荐必须包括在选择列表中
当指定包含 GROUPING SETS、CUBE 或 ROLLUP 的 GROUP BY 子句时
,不能重复任何分组集合,并且如果 C 是出现在 GROUPING SETS、
CUBE 或 ROLLUP 中的可空 GROUP BY 项,那么 GROUPING(C) 必须
出现在选择列表中
如果没有 GROUP BY 子句,那么每个基础表必须至少定义一个唯一
键,而且这些键的所有列必须出现在具体化查询表定义的选择列表
中
8
如果指定 REFRESH IMMEDIATE,那么在全查询包含 GROUP BY 子句时下
列限制适用:
选择列表必须包含 COUNT(*) 或 COUNT_BIG(*)
对于每个可空列 C,如果选择列表包含 SUM(C),那么还需要
COUNT(C)
必须出现至少下列其中一个聚集函数(并且没有其他聚集函数):
SUM()、COUNT()、COUNT_BIG() 或 GROUPING()
不能指定 HAVING 子句
在分区数据库环境中,GROUP BY 列必须包含具体化查询表的分区键
不允许聚集函数的嵌套
9
如果指定 REFRESH IMMEDIATE,那么全查询必须是子查询,但存在一个
例外,就是 UNION ALL 在 GROUP BY 的输入表表达式中受支持。
10
如果指定了 REFRESH IMMEDIATE 并且 FROM 子句引用了多个表,那么
只支持内连接(不使用显式 INNER JOIN 语法)。
11
如果指定 REFRESH IMMEDIATE,那么 UNION ALL 或 JOIN 的输入表表
达式不能包含聚集函数。
12
此具体化查询表的增量备份维护需要系统临时表,该表的行宽或列数超
出数据库上当前可用的最大系统临时表空间可以容纳的限制。
用户响应:
更改 CREATE TABLE 语句中的全查询,以使其符合基于具体化查询表选项和该具
体化查询表是否是复制的规则。
与原因码对应的操作是:
1
更正 CREATE TABLE 语句以确保所有元素都有名称(可使用 AS 子句
来命名表达式或对具体化查询表定义的列列表中的所有列显式命名)。
2
更正 CREATE TABLE 语句以确保只引用受支持的对象。
3
更正 CREATE TABLE 语句以确保只引用受支持的列或表达式类型。
4
更正 CREATE TABLE 语句以确保只引用受支持的列、表达式或函数。
5
创建未复制的具体化查询表,或更正 CREATE TABLE 语句以确保该查询
引用单个表而且不包含子查询、聚集或 PARTITIONING 子句。
6
将具体化查询表创建为 REFRESH DEFERRED,或者
除去昵称引用
除去 DISTINCT
除去专用寄存器
除去非确定性函数或将其替换为确定性函数
除去所有 OLAP、抽样函数和文本函数
从表达式中除去聚集函数或将表达式更改为对聚集函数的简单引用
除去聚集函数或添加 GROUP BY 子句
更正 CREATE TABLE 语句以确保未引用递归公共表表达式
除去子查询