2012-11-12 32 views
1

我有一个表称为数据如下员工:oracle的问题与触发和NEXTVAL

Employee_ID  Employee_Salary  Employee_HireDate 
    100    ----     ----- 
    101    ----     ----- 

现在我想创建一个触发器,让我获取新的雇员标识,并通过一个递增它,所以它可以放在桌子上。我发现一个例子是这样的:

CREATE OR REPLACE TRIGGER employee_b 
BEFORE INSERT ON employee 
FOR EACH ROW 
DECLARE 
     v_employee_id employee.employee_id%TYPE; 
BEGIN 
     SELECT employee_ID_SEQ.NEXTVAL 
     INTO v_employee_id 
      FROM dual; 
     :NEW.employee_id:=v_employee_id; 
END; 

但我得到的错误是:

ERROR at line 4: PL/SQL: ORA-02289: sequence does not exist 

我要像插入事件之前使用触发器:

INSERT INTO employee(employee_salary,employee_hiredate) VALUES (-----,------) 

任何帮助这个? 感谢

+0

这听起来像你的序列不存在...你可以发布select_从all_sequences where sequence_name = upper('employee_ID_SEQ')''的结果吗? – Ben

+0

感谢您的评论,我已经运行该查询,并出现“数据未找到”,我如何可以创建一个序列在这种情况下? – Layla

+1

[文档](http://docs.oracle.com/cd/E11882_01/server.112/e26088/statements_6015.htm#SQLRF01314)有很好的描述。 – Ben

回答

1

运行

create sequence employee_ID_SEQ start with 100 increment by 1; 

然后编译触发和尝试。阅读序列并设置适当的CACHE等值(默认缓存20可能是好的,如果你正在做大量的快速插入,你可能需要更多)。