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 $$ 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';
转载于:https://www.cnblogs.com/telwanggs/p/11021525.html
postgresql获取表最后更新时间(通过触发器将时间写入另外一张表)相关推荐
- SQL触发器--当表数据发生变化时,将数据同步到另一张表中
触发器 触发器是由一段代码块组成,当表中的数据发生变化(如INSERT.UPDATE 或 DELETE )时,会自动唤醒调用触发器中的代码,从而起到了保证业务规则和数据的完整性的作用. 创建触发器 c ...
- django 多对多表的创建,级联删除,手动创建第三张表
创建一张作者表,author,创建外键与book表,多对多关系 ,外键字段放在那张表都可以, class Author(models.Model):name = models.CharField(ma ...
- 将一张表的主键作为外键关联到另一张表中
将一张表的主键作为外键关联到另一张表中 1.外键的介绍 2.使用Navicat创建外键 3.外键的维护关系设定及其选择 1.外键的介绍 设置外键的作用很明显,就是讲两个表的数据产生关联,就比如个人信息 ...
- python做值班表预测_Django model一张表中两个字段设置外键参考另一张表两个字段...
class products(models.Model): MODE_CHOICES=(('week','周'),('day','日')) productname=models.CharField(m ...
- sql 同时(更新)update和(查询)select同一张表
当要使用本表的数据更新本表时,容易出错: 如下: update b set aaa=select max(MAX_def_60M) as max from b [Err] 1064 - You ha ...
- mysql将查询结果写入另一张表_将一张表的查询结果插入到另一张表(转)
将一张表的查询结果插入到另一张表 方法一: 代码 1 select into 和 insert into select 两种表复制语句 2 select * into destTbl from src ...
- sql与mysql中2个表数据进行匹配_SQL语言中把数据库中两张表数据关联起来的语句...
展开全部 1.创建32313133353236313431303231363533e59b9ee7ad9431333431373864两张测试表, create table test_cj(name ...
- mysql触发器对同一张表做操作_MySql 触发器对同表操作
触发器初始结构: DELIMITER $$ CREATE TRIGGER `数据库名`.`触发器名` BEFORE/AFTER INSERT/UPDATE/DELETE ON `数据库名`.`表名` ...
- mysql触发器对同一张表做操作_mysql的触发器同数据库 多表的数据操作
一.触发器的基本语法: 1.命名规则 CREATE TRIGGERBEFORE | AFTER } //触发器触发时间是在事件之前触发还是之后触发(也可以在过程中触发) { INSERT | UPD ...
最新文章
- Linux如何搜索文件的方法
- base64格式的图片数据如何转成图片
- 小于60的数中能被1到10整除的数量
- 亚马逊用算法解雇员工:“没想到我的HR居然不是人”
- 【Win7 Oracle 10G rman迁移恢复到Linux 32bit oracle 10G实战】
- Django框架之Auth模块
- 电容触摸屏GT911、GT928、GT9147的使用
- 产品经理如何培养敏锐的商业嗅觉
- CentOS被攻击的分析过程
- 接口缺方法调用时报错_TypeScript真香系列——接口篇
- 数字化方法基础(一)_基础操作与生成四面体
- 海龟编辑器 html版,海龟编辑器官方版
- 软件开发测试验收通知书,软件验收报告(共7篇).doc
- 静态网页的基本结构及标签
- 第39级台阶 小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!
- 二、lintcode刷题记录--二叉树的路径和
- 计算机桌面怎么换服,台式电脑怎么换桌面壁纸
- Windows平台搭建Mantis服务器
- org.quartz.JobPersistenceException: Couldn‘t store job:
- Java 三角形求边长和角度