通过触发器方式获取表最后更新时间,并将时间信息写入到另外一张表

一、创建测试表和表记录更新时间表

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 $$
begininsert 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) 编辑 收

转载于:https://www.cnblogs.com/telwanggs/p/11021525.html

postgresql获取表最后更新时间(通过触发器将时间写入另外一张表)相关推荐

  1. SQL触发器--当表数据发生变化时,将数据同步到另一张表中

    触发器 触发器是由一段代码块组成,当表中的数据发生变化(如INSERT.UPDATE 或 DELETE )时,会自动唤醒调用触发器中的代码,从而起到了保证业务规则和数据的完整性的作用. 创建触发器 c ...

  2. django 多对多表的创建,级联删除,手动创建第三张表

    创建一张作者表,author,创建外键与book表,多对多关系 ,外键字段放在那张表都可以, class Author(models.Model):name = models.CharField(ma ...

  3. 将一张表的主键作为外键关联到另一张表中

    将一张表的主键作为外键关联到另一张表中 1.外键的介绍 2.使用Navicat创建外键 3.外键的维护关系设定及其选择 1.外键的介绍 设置外键的作用很明显,就是讲两个表的数据产生关联,就比如个人信息 ...

  4. python做值班表预测_Django model一张表中两个字段设置外键参考另一张表两个字段...

    class products(models.Model): MODE_CHOICES=(('week','周'),('day','日')) productname=models.CharField(m ...

  5. sql 同时(更新)update和(查询)select同一张表

    当要使用本表的数据更新本表时,容易出错: 如下: update b  set aaa=select max(MAX_def_60M) as max from b [Err] 1064 - You ha ...

  6. mysql将查询结果写入另一张表_将一张表的查询结果插入到另一张表(转)

    将一张表的查询结果插入到另一张表 方法一: 代码 1 select into 和 insert into select 两种表复制语句 2 select * into destTbl from src ...

  7. sql与mysql中2个表数据进行匹配_SQL语言中把数据库中两张表数据关联起来的语句...

    展开全部 1.创建32313133353236313431303231363533e59b9ee7ad9431333431373864两张测试表, create table test_cj(name ...

  8. mysql触发器对同一张表做操作_MySql 触发器对同表操作

    触发器初始结构: DELIMITER $$ CREATE TRIGGER `数据库名`.`触发器名` BEFORE/AFTER INSERT/UPDATE/DELETE ON `数据库名`.`表名` ...

  9. mysql触发器对同一张表做操作_mysql的触发器同数据库 多表的数据操作

    一.触发器的基本语法: 1.命名规则 CREATE TRIGGERBEFORE | AFTER }  //触发器触发时间是在事件之前触发还是之后触发(也可以在过程中触发) { INSERT | UPD ...

最新文章

  1. Linux如何搜索文件的方法
  2. base64格式的图片数据如何转成图片
  3. 小于60的数中能被1到10整除的数量
  4. 亚马逊用算法解雇员工:“没想到我的HR居然不是人”
  5. 【Win7 Oracle 10G rman迁移恢复到Linux 32bit oracle 10G实战】
  6. Django框架之Auth模块
  7. 电容触摸屏GT911、GT928、GT9147的使用
  8. 产品经理如何培养敏锐的商业嗅觉
  9. CentOS被攻击的分析过程
  10. 接口缺方法调用时报错_TypeScript真香系列——接口篇
  11. 数字化方法基础(一)_基础操作与生成四面体
  12. 海龟编辑器 html版,海龟编辑器官方版
  13. 软件开发测试验收通知书,软件验收报告(共7篇).doc
  14. 静态网页的基本结构及标签
  15. 第39级台阶 小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!
  16. 二、lintcode刷题记录--二叉树的路径和
  17. 计算机桌面怎么换服,台式电脑怎么换桌面壁纸
  18. Windows平台搭建Mantis服务器
  19. org.quartz.JobPersistenceException: Couldn‘t store job:
  20. Java 三角形求边长和角度

热门文章

  1. linux内核--设备驱动程序(学习笔记)
  2. (25)FPGA乘法器设计(第5天)
  3. mongodb mysql数据类型_mongodb中数据类型的坑
  4. C#窗体控件随窗体变大而变大
  5. python堆排序算法_Python算法学习之堆和堆排序
  6. 分布式系统架构的基本原则和实践
  7. 深入了解epoll 函数
  8. 高性能HTTP加速器Varnish(性能调优篇)
  9. 【数据结构】----C语言实现栈操作
  10. ubuntu12.04 安装kinect V1驱动