テーブルに自動インクリメント列を作成しようとしていますが、これに見られるように post 2つの方法があり、Identity列を使用した2番目の実装はより洗練されたソリューションですが、実装しようとすると次のエラーが発生します:
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 は、私が解決策を得た場所からの参照です。
問題は、古いバージョンのOracle11gを使用していたことです。
おそらく、接続しようとしているOracleデータベース(server)は12cですが、使用しているクライアント(ローカルにインストール)はそうではありませんこの機能をサポートします。 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.