SQL错误:ORA-02000:在创建基于标识列的表时缺少ALWAYS关键字

我尝试在表上创建一个自动递增的列,正如我在本文中看到的那样,有两种方法,第二种使用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) ); 

可以看出,我尝试自动递增的列是表的主键。

这是我得到解决方案的参考。

问题是我使用的是旧版本的Oracle,11g。

在版本12.1.0.1上完美适用于我。

 SQL> select banner from v$version where rownum = 1; BANNER -------------------------------------------------------------------------------- Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production SQL> CREATE TABLE AUTH_PERMISSION 2 ( 3 ID NUMBER(19,0) GENERATED BY DEFAULT ON NULL AS IDENTITY, 4 -- ID NUMBER(19,0) PRIMARY KEY NOT NULL, 5 NAME VARCHAR2(50) UNIQUE NOT NULL, 6 ACTION_ID NUMBER(19,0) NOT NULL, 7 RESOURCE_ID NUMBER(19,0) NOT NULL, 8 ENVIRONMENT_ID NUMBER(19,0) NOT NULL 9 ); Table created. SQL>