0
我想AUTO_INCREMENT下表中的cust_id字段:PL/SQL错误的AUTO_INCREMENT
CREATE TABLE A113222813_CUSTOMERS (
CUST_ID NUMBER(10) PRIMARY KEY,
CUST_FNAME VARCHAR2(20),
CUST_SNAME VARCHAR2(20),
CUST_UNAME VARCHAR2(30) NOT NULL,
CUST_PASS VARCHAR2(40) NOT NULL
)
我创建下列顺序和触发器来处理这个问题:
CREATE SEQUENCE CUST_SEQ START WITH 1 INCREMENT BY 1 NOCYCLE;
CREATE OR REPLACE TRIGGER CUST_TRG
BEFORE INSERT ON A113222813_CUSTOMERS
FOR EACH ROW
BEGIN
:NEW.CUST_ID := CUST_SEQ.NEXTVAL;
END;
但它一直抛出以下错误:
Error(2,30): PLS-00357: Table,View Or Sequence reference 'CUST_SEQ.NEXTVAL' not allowed
in this context
任何想法我做错了什么?
您确定您使用的是11g吗?如果您使用的早期版本的Oracle不支持在这种直接分配中使用序列,那么您得到的错误将非常有意义。但是你已经专门为11g标记了这个问题...... –
这个语法在Oracle 11版本中是允许的,所以如果你在老版本的Oracle中工作,你应该使用SELECT CUST_SEQ.NEXTVAL到:来自dual的NEW.CUST_ID。 –
就是这样。我很抱歉。根据我收到的手册,我的印象是10克,它是11克。谢谢! –