SQL错误:ORA-02000:缺少ALWAYS关键字
我使用的是Oracle版本11g,我希望ad HR db,但当我尝试创建表时,会出现此错误SQL错误:ORA-02000:缺少ALWAYS关键字,sql,oracle,oracle11g,identity-column,Sql,Oracle,Oracle11g,Identity Column,我使用的是Oracle版本11g,我希望ad HR db,但当我尝试创建表时,会出现此错误 CREATE TABLE regions ( region_id NUMBER GENERATED ALWAYS BY DEFAULT AS IDENTITY START WITH 5 PRIMARY KEY, region_name VARCHAR2( 50 ) NOT NULL ); 如何在不更改oracle版本的情况下解决此问题?很抱歉,您尝试连接的服务器/数据库可
CREATE TABLE regions
(
region_id NUMBER GENERATED ALWAYS BY DEFAULT AS IDENTITY
START WITH 5 PRIMARY KEY,
region_name VARCHAR2( 50 ) NOT NULL
);
如何在不更改oracle版本的情况下解决此问题?很抱歉,您尝试连接的服务器/数据库可能是12c,而您的/客户端不支持此功能。(我相信
IDENTITY
定义是在12c中引入的)
也许可以尝试使用
序列
。(Sequence是一个不绑定到特定表的对象,可以在任何地方使用它来获取新的唯一编号。因此,您应该创建一个触发器来设置列的值)Identity作为Oracle 12c的一部分引入,在11g中不可用,因此对于12c之前的自动增量ID,您可以使用它
习惯于对MS Access中的列或SQL Server中的标识列进行自动编号的开发人员经常抱怨,他们必须在Oracle中使用序列手动填充主键列 在Oracle中,使用触发器可以轻松实现此类功能 创建一个具有适当主键列和支持该列的序列的表
创建表部门(
ID号(10)不为空,
说明VARCHAR2(50)不为空);
更改表部门添加(
约束部门主键(ID));
创建序列部门;
如果插入中未指定ID列,则创建一个触发器来填充该列
创建或替换触发器部门\u bir
在插入部门之前
每行
当(new.id为空)
开始
选择dept\ u seq.NEXTVAL
输入:new.id
来自双重;
结束;
/
在Oracle 12c之前的版本中,您应该使用序列和触发器来处理自动编号ID
桌子
顺序:
CREATE SEQUENCE regions_seq;
触发:
CREATE OR REPLACE TRIGGER regions_id_generate
BEFORE INSERT ON regions
FOR EACH ROW
WHEN (new.region_id IS NULL)
BEGIN
SELECT regions_seq.NEXTVAL
INTO :new.region_id
FROM dual;
END;
/
在执行插入时,只需为
区域ID
列指定一个NULL
值,Oracle就会将其作为序列中的下一个整数来指定,因为DDL的格式不正确。我想您需要自动递增ID。如果是这样,您应该查找此链接:这是否回答了您的问题?
CREATE OR REPLACE TRIGGER regions_id_generate
BEFORE INSERT ON regions
FOR EACH ROW
WHEN (new.region_id IS NULL)
BEGIN
SELECT regions_seq.NEXTVAL
INTO :new.region_id
FROM dual;
END;
/