Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle SQL自动生成的标识主键_Sql_Oracle - Fatal编程技术网

Oracle SQL自动生成的标识主键

Oracle SQL自动生成的标识主键,sql,oracle,Sql,Oracle,我正在使用Oracle的SQLDeveloper并尝试创建一些表。 我的目标是创建一个简单的表,例如,带有自动生成的id和描述 CREATE TABLE xpto ( id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, description VARCHAR2(200) NOT NULL ); 我得到: Error report - SQL Error: ORA-02000: missing ( keyword 02000. 00000 -

我正在使用Oracle的SQLDeveloper并尝试创建一些表。 我的目标是创建一个简单的表,例如,带有自动生成的id和描述

CREATE TABLE xpto (
id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
description VARCHAR2(200) NOT NULL
);
我得到:

Error report -
SQL Error: ORA-02000: missing ( keyword
02000. 00000 -  "missing %s keyword"
知道我做错了什么吗?
提前谢谢

标识列是Oracle从12c版开始支持的一项功能。
在Oracle 11中,它不起作用,必须使用序列和触发器,方法如下:

CREATE TABLE xpto (
id NUMBER PRIMARY KEY,
description VARCHAR2(200) NOT NULL
);

CREATE SEQUENCE xpto_seq;

set define off
CREATE OR REPLACE TRIGGER xpto_id 
BEFORE INSERT ON xpto 
FOR EACH ROW
WHEN ( new.id IS NULL )
BEGIN
   :new.id := xpto_seq.nextval;
END;
/

为此,您需要Oracle 12.1。您使用的是哪个Oracle版本?Oracle IDE 4.1.5.21.78这是SQL客户端的版本,而不是Oracle Server的版本编辑:11.2.0.1.0感谢您的澄清