2015-06-08 2 views
0

Предположим, у меня есть две таблицы: a и b, обе имеют две строки: int и date. Я хочу написать триггер, который при удалении строк из таблицы a копирует их в таблицу b с датой, измененной на текущую дату. Итак, если я удаляю строку с 13, 2015-01-01 сегодня из таблицы a, 13, 2015-06-08 вставлен в таблицу b. Любые идеи о том, как это сделать?Триггер, вставляющий удаленные строки в Postgresql

+0

Что вы пытаетесь? То, что вы описали, не звучит сложно, поэтому я не понимаю, что именно вам неприятности. –

+0

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

+0

Отправьте код вашей функции. –

ответ

3
create or replace function a_adr_tf() returns trigger as $$ 
begin 
    insert into b(aid, awhen) values (old.id, now()); 
    return old; 
end; 
$$ language plpgsql; 

create trigger a_adr after delete from a for each row execute procedure a_adr_tf(); 

Обратите внимание, что этот триггер не заботится о возможном дубликате первичного ключа в таблице b. Я предположил, что столбцы в A называются id и when, а в B они называются aid и awhen.

Вы можете решить проблему первичного ключа B при наличии ПК в B от типа серийного, или, если вы хотите только одну строку в B с тем же id от A с триггером удаляемого из B, когда новая строка вставляется в A.

+0

Большое спасибо, единственное, что я не знал, это часть old.id. – eilchner

Смежные вопросы