2017-02-20 2 views
0

, если вы создаете перед триггером обновления в таблице, и этот триггер не удалось по какой-либо причине пользователь не может обновить таблицу до тех пор, пока вы не исправите или не устраните триггер.so есть ли какой-либо способ предотвратить это? я имею в виду, если вы допустили ошибку при записи триггера и хотели, чтобы обновление продолжалосьпредотвращать оракул перед запуском обновления обновления, чтобы остановить обновление таблицы

+0

Вы можете добавить блок EXCEPTION, чтобы поймать все исключения и молча игнорировать их. Это хорошая наземная мина для будущих разработчиков, которые задаются вопросом, почему триггер обновления не делает то, что он должен делать. См. Http://www.orafaq.com/wiki/WHEN_OTHERS –

+2

Найдите ошибку в триггере и исправьте ее. –

ответ

0

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

Это не помогает при ошибках во время выполнения.

Если вы заменили существующий триггер, новый код по-прежнему будет заменять старый и будет по-прежнему отключен. Если вы полагаетесь на код запуска для установки обязательного значения, это приведет к ошибке выполнения.

CREATE OR REPLACE TRIGGER TEST_TRIG 
BEFORE INSERT ON TEST 
FOR EACH ROW 
DISABLED 
BEGIN 
    :NEW.TEST_KEY := TEST_SEQ.NEXTVAL; 
END; 
+0

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