Как НЕ прерывать выполнение триггера после оператора RAISE? Или как по-другому вывести сообщение?
Использую INSTEAD OF триггер уровня строки, поле каждой строки проверяется, и если не подходит под условие, то нужно вывести сообщение, но при этом не прерывать выполнение триггера и не откатывать транзакцию.
Это вообще можно сделать с помощью RAISE?
Или нужно по-другому выводить сообщения в этом случае?
create table t (id int, val text);
insert into t values (1,'a'), (2,'b'), (7,'u');
create view v as select * from t where id % 2 = 1;
create or replace function v_t() returns trigger as $$
begin
if new.id % 2 = 1 then
insert into t values (new.id, new.val);
return new;
else
raise notice 'cannot insert even id %', new.id;
return null;
end if;
end;
$$ language plpgsql;
create trigger tg_v instead of insert on v for each row execute function v_t()
# insert into v values (5, 'x');
INSERT 0 1
# insert into v values (6, 'y');
NOTICE: cannot insert even id 6
INSERT 0 0