2010-01-24 108 views
1

我试图创建一个触发器,从预定义的序列设置ID。创建插入触发器错误

CREATE SEQUENCE seq_list_status 
    START WITH 1 
    INCREMENT BY 1 

; 

CREATE OR REPLACE TRIGGER trg_list_status_insert 
    BEFORE INSERT ON list_status 
    FOR EACH ROW 
    select seq_list_status.nextval into :new.id from dual; 
/

我得到下面的错误在创建触发器

Error starting at line 1 in command: 
CREATE OR REPLACE TRIGGER trg_list_status_insert 
    BEFORE INSERT ON list_status 
    FOR EACH ROW 
    select seq_list_status.nextval into :new.id from dual 
Error at Command Line:4 Column:4 
Error report: 
SQL Error: ORA-04079: invalid trigger specification 
04079. 00000 - "invalid trigger specification" 
*Cause: The create TRIGGER statement is invalid. 
*Action: Check the statement for correct syntax. 

我GOOGLE了它,但它似乎一切OK。任何想法可能是错误的?

回答

5

你缺少的beginend

CREATE OR REPLACE TRIGGER trg_list_status_insert 
BEFORE INSERT ON list_status 
FOR EACH ROW 
BEGIN 
select seq_list_status.nextval into :new.id from dual; 
END; 
/
6

触发器是程序单元。因此,我们必须将代码体包装在BEGIN和END中。试试这个

CREATE OR REPLACE TRIGGER trg_list_status_insert 
    BEFORE INSERT ON list_status 
    FOR EACH ROW 
BEGIN 
    select seq_list_status.nextval into :new.id from dual; 
END; 
/

不幸的是the examples in the SQL Reference没有我们想的那么有帮助。但它链接到其他有用的文档,如the App Developers Guide