Ошибка создания триггера вставки - PullRequest
1 голос
/ 24 января 2010

Я пытаюсь создать триггер, который устанавливает идентификатор из предопределенной последовательности.

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.

Я гуглил это, но, кажется, все в порядке. есть идеи, что может быть не так?

Ответы [ 2 ]

6 голосов
/ 24 января 2010

Триггеры - это программные единицы. Следовательно, мы должны обернуть тело кода в 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;
/

К сожалению примеры в справочнике по SQL не так полезны, как хотелось бы. Но в нем есть ссылки на другие полезные документы, такие как Руководство для разработчиков приложений .

5 голосов
/ 24 января 2010

вам не хватает 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;
/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...