当前位置: 首页 > 面试题库 >

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

百里景山
2023-03-14
问题内容

我尝试在表上创建一个自动递增的列,正如我在这篇文章中看到的,有两种方法,使用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。


问题答案:

您尝试连接的Oracle数据库 (服务器) 也许是 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.


 类似资料:
  • 问题内容: 我收到以下查询的ORA:00936错误。请让我知道查询中的问题 问题答案: SELECT convert(DATE,r.created_dt)作为created_dt 问题在于错误使用了 CONVERT 函数。请参阅文档。 我猜您正在尝试转换数据类型,可以使用 TO_DATE 将字符串转换为日期。或者, TO_CHAR 反之亦然。

  • 这是我的密码。但我不知道使用11G速递版以来的错误在哪里。它显示错误,但不显示错误在哪一行

  • 问题内容: 我正在编写一个程序,其中有sql语句,它将使用using语句在表中插入值。条件是when is then和when is then 。当我尝试为此使用它给我错误缺少关键字我不知道,但是如果不使用语句还有其他方法可以做到这一点。我正在考虑使用,但不知道该怎么做。 这是我的查询: 问题答案: 您混合了 CASE* 语句的两种不同 语法 。 * 1.simple_case_statement

  • 问题内容: 我正在尝试进行查看,但是出现重复的列名错误。如果我单独运行选择查询,则查询返回的结果如下: 此查询工作正常。但是当我尝试将其作为如下视图运行时: 然后,我得到重复的列名错误。为什么会出现此错误? 问题答案: 您有两列: 和 您应该别名其中之一,例如

  • 我一直被告知我缺少一个右括号,但我没有看到,有人能指出吗?