[PostgreSQL] Как отследить операции записи в БД с опред. знач. полей?
Ну а если выполнять для каждой добавляемой записи и проверять ID уже внутри функции?
Была у меня такая мысль, но так делать не хочется, потому что будет слишком много ложных срабатываний. Событие это достаточно редкое по сравнению с общим объемом операций INSERT. Замедлит работу, наверное...
Как вариант - перевесь это дело с БД на скрипты. Вообще есть такая тенденция - на больших проектах сносить все констрейнты, чтобы не перегружать и без того запарившуюся базу.
create table tmp1(id text);
create or replace function f1(tt text)
returns integer as
$$
declare
begin
if(tt like 'as%')
then
insert into tmp1 values(tt);
end if;
return 0;
end;
$$ language plpgsql;
create table tmp2
(
id text primary key,
constraint ccc check
(id not like 'as%' or f1(id) = 0)
);
insert into tmp2 values('as1');
insert into tmp2 values('as2');
insert into tmp2 values('as3');
insert into tmp2 values('E1');
insert into tmp2 values('E2');
insert into tmp2 values('E3');
select * from tmp1;
id
-----
as1
as2
as3
(3 rows)
думаю, в общем мысль ясна

здорово


Оставить комментарий
mazamaza2008
"Спасите, помогите, спасите, помогите..." (с) лев Алекс, "Мадагаскар"Дана БД и таблица в ней. У таблицы есть поле с идентификатором: ID. Надо: постоянно следить, когда в эту таблицу записываются строки, у которых поле ID начинается с заданной подстроки. В случае такового события запустить внешнюю функцию.
Чувствую, что все это на триггер очень похоже, но не могу сообразить, как заставить триггер отслеживать INSERT у которого ID='blablabla%'.
Спасибо