Отменить вставку без выдачи ошибки

Antipich
Дата: 06.11.2008 11:06:30
Есть такая проблема:
имеется приложение, которое уже менять нельзя.
Оно пишет в базу ORACLE.
Нужно сделать так, чтобы при вставке, запись проверялась и, если что, не вставлялась.
Пробывал сделать constraint. Он срабатывает и возвращает приложению ошибку. Оно падает :(
Если сделать вызов ошибки в INSERT триггере, то, естественно, тот же результат.
Как сделать, чтобы запись просто не вставлялась и при этом не выдавалось никаких сообщений?
Заранее благодарю.
Vladimir Sitnikov
Дата: 06.11.2008 11:11:07
Antipich
Оно пишет в базу ORACLE.
Какая версия?
Если >10 и запрос всегда одинаковый, то dbms_advanced_rewrite вам в руки.
tru55
Дата: 06.11.2008 11:14:15
Только вот не появится ли через некоторое время вопрос "Вот вставляли строки, а они почему-то не вставились / исчезли"?
Elic
Дата: 06.11.2008 11:17:36
Antipich
Как сделать, чтобы запись просто не вставлялась и при этом не выдавалось никаких сообщений?
Заменить таблицу представлением + instead of trigger.
Elic
Дата: 06.11.2008 11:32:24
Vladimir Sitnikov
Antipich
чтобы при вставке, запись проверялась и, если что, не вставлялась
dbms_advanced_rewrite вам в руки.
99,9% за то, что это insert...values - Что тут можно переписать? :)
Более того, не уверен, что insert можно переписать.
Но даже несмотря на всё это - как оно могло бы помочь? :)
Antipich
Дата: 06.11.2008 12:39:07
База 10g.
Ещё момент. В этой таблице будет порядка нескольких миллионов записей.

Представление-это имеется ввиду вьюха?
Можно здесь по-подробнее...
Antipich
Дата: 06.11.2008 12:45:51
А, всё, понял :) Спасибо, вроде то, что надо.
asteroidg
Дата: 06.11.2008 13:05:44
Antipich,

Ну и как ты это решил ?
Elic
Дата: 06.11.2008 13:17:13
asteroidg
Antipich, Ну и как ты это решил ?
Тебе это не подойдёт из-за "и при этом не выдавалось никаких сообщений"
Antipich
Дата: 06.11.2008 13:46:58
Elic,

declare
duplicate_info EXCEPTION;
PRAGMA EXCEPTION_INIT (duplicate_info, -00001);
begin
if ... then
insert into ...
else
null;
end if;

end;