2015-05-02 5 views
0

Я новичок в Oracle и хотел бы знать, как заставить этот триггер работать, пожалуйста. Я могу делать каждый триггер отдельно, но мне нужны все они в одном, если это имеет смысл.Ошибка Oracle: ORA-04079: недействительная спецификация триггера

create trigger ID_trigger 
    before insert on crime, evidence, offence, officer 
    for each row 
    begin 
    select crime_seq.nextval into :new.crime_id from dual 
    and officer_seq.nextval into :new.officer_id from dual 
    and evidence_seq.nextval into :new.evidence_id from dual 
    and offence_seq.nextval into :new.offence_id from dual; 
    end; 

Первоначально у меня был один триггер для каждой таблицы. Однако при представлении данных в моей форме триггеры, казалось, перезаписать предыдущую

+0

Вы пытаетесь создать один триггер, который охватывает четыре таблицы, а не один триггер на каждой таблице? Пожалуйста, начните с [документации] (http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/create_trigger.htm), чтобы увидеть правильный синтаксис для инструкции. Выбранный оператор тоже очень неправильный. –

+0

Я понимаю, что невозможно создать один триггер, который охватывает все четыре таблицы? @AlexPoole – Oliver

+0

@AlexPoole Первоначально у меня был синглер-триггер для каждой таблицы, однако при подавлении данных в мою форму триггеры, казалось, перезаписали предыдущий – Oliver

ответ

1

" I initially had a singler trigger for each table, however when sumbitting data into my form the triggers seemed to have overwritten the previous one"

Давайте догадка: вы назвали все четыре спусковые id_trigger. Каждый последующий вызов CREATE OR REPLACE TRIGGER перезаписывает первый. Если вы не использовали CREATE TRIGGER, как вы здесь, в этом случае каждый последующий вызов завершится неудачно. В любом случае только одна таблица будет иметь триггер.

Вы видите, хотя они принадлежат к таблице, триггеры представляют собой отдельные объекты базы данных. Итак, как индексы или ограничения, их имена должны быть уникальными в рамках схемы.

Решение прост: дайте каждому триггеру другое имя, скажем, включив имя таблицы.

+0

Нет, я назвал каждый триггер по-другому, совпадающий с его именем таблицы, он все еще перезаписывал предыдущий @APC – Oliver

+0

@ Oliver - Извините, но я думаю, вы ошибаетесь. Пожалуйста, разместите минимальный набор кода, который мы можем запустить, который демонстрирует такое поведение. – APC