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';

postgresql获取表最后更新时间(通过触发器将时间写入另外一张表)的更多相关文章
- 将mysql中的一张表中的一个字段数据根据条件导入另一张表中
添加字段:alter table matInformation add facid varchar(99) default ''; 导入数据:update matInformation m set ...
- oracle查看表中否存在某字段,数据库是否存在某张表
数据库是否存在某字段 SELECT COUNT(*) FROM USER_TAB_COLUMNS WHERE TABLE_NAME = '表名' AND COLUMN_NAME = '字段名'; ...
- sql 触发器 针对一张表数据写入 另一张表 的增删改
ALTER TRIGGER [dbo].[tri_test2] ON [dbo].[student] for INSERT,DELETE,UPDATEAS BEGIN if not exists (s ...
- SQLServer 触发器----增删改触发,两张表
ALTER TRIGGER [dbo].[PriceRange] ON [dbo].[Tab_SaleAndCarStyle] for update,insert,deleteASdecla ...
- SQLite复杂表的更新方式
SQLite复杂表的更新方式 在SQLite中,如果早期设计的表无法满足需要,就需要对表进行更新,如修改名字.添加列.如果针对简单表,修改起来相对容易,直接使用提供的ALTER命令即可.但是如果该 ...
- MySQL数据库 字段操作 多表关系(更新中...)
外键 (foreign key) ## 外键 ```mysql # 作者(author):id,name,sex,age,mobile, detail_id # 作者详情(author_detail) ...
- Django:常用字段、手动自动第三张表单、元信息
一.常用字段和非常用字段 二.手动,自动创建第三张表 三.元信息 四.defer和only 一.常用字段和非常用字段 -常用字段 AutoField int自增列,必须填入参数 primary_key ...
- Django项目:CRM(客户关系管理系统)--41--33PerfectCRM实现King_admin编辑整张表限制
readonly_table=False#默认表单不锁定 readonly_table=True#默认表单不锁定 # forms.py # ————————19PerfectCRM实现King_adm ...
- Mysql实现定时清空一张表的旧数据并保留几条数据
要达到如下目的: Mysql数据库会每隔一段时间(可以是2小时,也可以是一天,这个可以自定义),定时对一张库中的表做一个判断,如果这张表的数据超过了20条(这个数据也是自定义的,也可以是200条),就 ...
随机推荐
- 判断两个list是否元素一样
首先创建枚举 public enum TheType { type1 = , type2 = , type3 = } 1.如果不考虑顺序,即顺序不一样,只要元素都一样即可 List<TheTyp ...
- Asp .Net Core 2.0 登录授权以及前后台多用户登录
用户登录是一个非常常见的应用场景 .net core 2.0 的登录方式发生了点变化,应该是属于是良性的变化,变得更方便,更容易扩展. 配置 打开项目中的Startup.cs文件,找到Configur ...
- vue项目js实现图片放大镜功能
效果图: 我写的是vue的组件形式,方便复用,图片的宽高,缩放的比例可以自己定义 magnifier.vue <template> <div class="magnif ...
- 14.SpringMVC核心技术-类型转换器
类型转换器 在前面的程序中,表单提交的无论是 int 还是 double 类型的请求参数,用于处理该请求 的处理器方法的形参, 均可直接接收到相应类型的相应数据,而非接收到 String 再手工转换. ...
- redis—django-redis
自定义连接池 这种方式跟普通py文件操作redis一样,代码如下: views.py import redis from django.shortcuts import render,HttpResp ...
- CAFFE(四):Ubuntu 下安装jupyter notebook
第一步.安装 pycaffe notebook 接口环境 在上一步成功安装 caffe 之后,就可以通过 caffe 去做训练数据集或者预测各种相关的事了,只不过需要在命令行下通过 caffe 命令进 ...
- linux (wsl) npm 无法安装包
错误代码如下 request to https://registry.npm.taobao.org/yrm failed, reason: getaddrinfo EAI_AGAIN registry ...
- glRenderbufferStorageMultisample
https://www.khronos.org/registry/OpenGL-Refpages/es3.0/html/glRenderbufferStorage.xhtml https://www. ...
- np中的温故知新
1.一维数组中寻找与某个数最近的数 # 一维数组中寻找与某个数最近的数 Z=np.random.uniform(0,1,20) print("随机数组:\n",Z) z=0.5 m ...
- [Sping Boot] Build a REST CRUD API with Hibernate
pom.xml: <dependencies> <dependency> <groupId>org.springframework.boot</groupId ...