postgresql獲取表最后更新時間(通過觸發器將時間寫入另外一張表)


通過觸發器方式獲取表最后更新時間,並將時間信息寫入到另外一張表

一、創建測試表和表記錄更新時間表

復制代碼
CREATE TABLE weather(
city varchar(80),
temp_lo int,  --最低溫度
temp_hi int,  --最高溫度
prcp real,     --濕度
date date
);
復制代碼
復制代碼
CREATE TABLE t_record_change(
table_name varchar(32) primary key,
last_update_time timestamp(6) with time zone,
trans_id varchar(32),
commited numeric(1,0)
);
復制代碼

二、創建觸發器函數

復制代碼
--創建觸發器函數
create or replace function f_update_change_log() returns trigger as $$
begin
    insert into t_record_change(table_name,last_update_time,trans_id,commited) values(TG_TABLE_NAME,current_timestamp,(select txid_current()),1)
        on conflict(table_name)
    do update set last_update_time = current_timestamp,trans_id = (select txid_current()),commited = 1;
    return null;
end;
$$ language plpgsql;
復制代碼

三、創建觸發器

--創建觸發器
drop trigger if exists x_weather_u on weather;
create trigger x_weather_u after insert or update or delete on weather
for each statement execute procedure f_update_change_log();

四、測試

在sql窗口中分別執行以下sql語句,並到t_record_change表中查看時間是否更新

insert into weather values('nanjing',20,40,0.28,'2018-06-27');
update weather set temp_lo = 15 where city = 'nanjing';
delete from weather where city = 'nanjing';

 

 
 
posted @  2018-07-05 15:55 Luis Yang 閱讀(1165) 評論(0) 編輯 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM