这是一个sql脚本的代码片段,它给了我错误,我必须在表的primary_key上生成一个序列,而不使用oracle中的触发器:
CREATE SEQUENCE t1_seq START WITH 1 INCREMENT BY 1;
DROP TABLE CPR_SOURCE_SYSTEM_METADATA;
CREATE TABLE CPR_SOURCE_SYSTEM_METADATA
(
SYSTEM_ID NUMBER(4) NOT NULL t1_seq.nextval,
SYSTEM_NAME VARCHAR2(200),
DATE_FORMAT VARCHAR2(200),
CREATED_BY VARCHAR2(200),
MODIFIED_BY VARCHAR2(200),
CREATED_ON NUMBER(20),
MODIFIED_ON NUMBER(20),
IS_DELETED VARCHAR2(1),
CONSTRAINT "CPR_SOURCE_SYSTEM_PK" PRIMARY KEY ("SYSTEM_ID")
);
它给了我以下错误:
DROP TABLE CPR_SOURCE_SYSTEM_METADATA *第1行的错误:ORA-00942:表或视图不存在
SYSTEM_ID NUMBER(4)NOT NULL t1_seq.nextval, *第3行的错误:ORA-00907:缺少右括号
无法找出错误,任何人都可以帮忙吗?
答案 0 :(得分:2)
SYSTEM_ID NUMBER(4) NOT NULL t1_seq.nextval,
t1_seq.nextval
段无效 - 您无法指定自动递增列。
SQL解析器期望看到:
SYSTEM_ID NUMBER(4) NOT NULL,
并抛出异常,因为逗号不在预期的位置。
在Oracle 12c中,您可以使用identity column,但在早期版本中,您需要: