2015-06-08 93 views
0

假設我有兩個表,分別爲ab,它們都有兩行intdate。我想寫一個觸發器,當從表a刪除行時,將它們複製到表b,並將日期更改爲當前日期。因此,如果我今天從表a中刪除了13, 2015-01-01行,則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中的列被稱爲idwhen,並且在B中它們被稱爲aidawhen

您可以通過具有PK的類型串行B解決B主鍵的問題,或者,如果你只想要一個在B具有相同idA行與觸發器從B刪除時新行插入A

+0

非常感謝,我唯一不知道的就是'old.id'部分。 – eilchner