【发布时间】:2015-05-02 14:31:49
【问题描述】:
我尝试在表上创建一个自动递增的列,正如我在post 中看到的那样,有两种方法,第二个使用 Identity 列的实现是一个更优雅的解决方案,但是当我尝试实现它时,我得到了以下错误:
Error at Command Line : 3 Column : 31
Error report -
SQL Error: ORA-02000: missing ALWAYS keyword
02000. 00000 - "missing %s keyword"
实际表格脚本实现:
CREATE TABLE "PLATFORM"."AUTH_PERMISSION"
(
ID NUMBER(19,0) GENERATED BY DEFAULT ON NULL AS IDENTITY,
-- ID NUMBER(19,0) PRIMARY KEY NOT NULL,
NAME VARCHAR2(50) UNIQUE NOT NULL,
ACTION_ID NUMBER(19,0) NOT NULL,
RESOURCE_ID NUMBER(19,0) NOT NULL,
ENVIRONMENT_ID NUMBER(19,0) NOT NULL,
CONSTRAINT "ACTION_ID" FOREIGN KEY ("ACTION_ID")
REFERENCES "AUTH_ACTION" ("ID") ENABLE,
CONSTRAINT "ENVIRONMENT_ID" FOREIGN KEY ("ENVIRONMENT_ID")
REFERENCES "AUTH_ENVIRONMENT" ("ID") ENABLE,
CONSTRAINT "RESOURCE_ID" FOREIGN KEY ("RESOURCE_ID")
REFERENCES "AUTH_RESOURCE" ("ID") ENABLE,
UNIQUE (ACTION_ID, ENVIRONMENT_ID, RESOURCE_ID)
);
可以看出,我尝试自增的列是表的主键。
This 是我从中获得解决方案的参考。
问题是我使用的是旧版本的 Oracle,11g。
【问题讨论】:
-
GENERATED BY DEFAULT声明无效。在这里查看更多信息oracle-base.com/articles/11g/virtual-columns-11gr1.php。它存在于 oracle 12c,请指定您的数据库版本?? -
你的预言机版本??
-
oracle版本是12c
-
您确定服务器是 12c,而不仅仅是您的客户端?看起来很像您的服务器是 11g。
select * from product_component_version或select * from v$version报告什么?