【发布时间】:2020-07-23 12:29:31
【问题描述】:
我在CREATE TABLE 语句中定义了以下生成的列:
NET_ROWS_ADDED NUMBER(18) GENERATED ALWAYS AS (ROW_COUNT - PREV_ROW_COUNT) /*STORED*/,
ROW_COUNT 和 PREV_ROW_COUNT 是先前在同一个表中定义的简单 NUMBER(18) 列。
一切正常。
但是,如果我取消注释 STORED 选项,我会得到:
ORA-00907: missing right parenthesis
我需要将其转换为 STORED 生成的列。
这里的语法有什么问题?这一切对我来说都是正确的......
【问题讨论】:
-
Oracle中没有
STORED选项,你用的是MySQL吗? -
您收到错误,因为 STORED 无效; Oracle 从不存储虚拟列。不知道为什么你认为你需要;你不知道,请参阅here。然后,您仍然可以索引,在 where 子句中使用,创建视图,......简而言之,您可以对存储的列进行任何操作。除了直接设置它们的值。
-
大声笑我一直在无意中查看 MySQL 文档。这就解释了。谢谢!
标签: sql oracle syntax calculated-columns