Oracle SQL自动生成的标识主键

时间:2017-04-10 20:46:03

标签: 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 -  "missing %s keyword"

知道我可能做错了什么吗? 提前谢谢!

1 个答案:

答案 0 :(得分:1)

标识列是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;
/