我正在使用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"
知道我可能做错了什么吗? 提前谢谢!
答案 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;
/