有两张表 user  和  diff_user_list

当对user表进行增删改查,或其中某个字段发生变化时,相应的对diff_user_list表中插入字段。

下面的代码的作用是,当user表中的字段"姓名"更新时,把旧的记录存入 diff_user_list  表中

依此类推,还可以写出 插入数据 删除数据时的,备份之前数据的代码。

create or replace function make_diff_user_list()  returns trigger as$body$declarecurtime timestamp;begincurtime := `now`;IF(TG_OP  = 'UPDARE' ) THENIF (OLD.user_name != NEW.user_name ) THENINSERT INTO diff_user_list (user_id, user_name, update_time, operate_flg)VALUES ( OLD.user_id, OLD.user_name, curtime, `1` );RETURN NULL;END IF;END IF; RETURN NULL;EXCEPTIONWHEN OTHERS THENRETURN NULL;end;$body$language 'plpgsql' volatilecost 100;

说明

上面这段代码是一个存储过程 (procedure)

其中有$body$   这里面可以不是body,可以是别的东西,比如  diff_user_list

下面这段代码是建立触发器,并与上面的存储过程相关联

create trigger diff_user_listafter insert or update or delete ON userfor each row execute procedure make_diff_user_list();

注意:

===============================================

如果报错

language "plpgsql" dose not exist

执行如下语句

create language plpgsql

postgre SQL 中的 触发器 (实例应用,如何备份更新之前的差分数据)相关推荐

  1. 关于SQL中的触发器(数据库)

    关于在SQL中的触发器相关知识(就业面试题库.数据库) 1.触发器是什么? 触发器是一个特殊的存储过程,它被捆绑在SQL的表格或者视图上. 它不能直接调用,主要通过事件来触发,而被被动的执行. ps: ...

  2. 详解SQL中的触发器

    ● 原因 ● 触发器 ○ 简介 ○ 分类 ○ INSERTED和DELETED ○ 优缺点 ● 语法 ○ 建立触发器 ○ 删除触发器 ○ 修改触发器 ○ 开启和禁用 ○ 提醒和保护 ● 示例 原因 今 ...

  3. Oracle PL/SQL中的触发器

    sql语句的执行一般都是一条一条的,当我们想执行了某一条sql语句时,会自动执行某些事件,这个时候就可以用到触发器.触发器顾名思义就是一件事的发生会被触发产生某一个事件.         创建了某触发 ...

  4. Postgre SQL 中的时间格式

    我的其他文章 亲身分享 一次 字节跳动 真实面试经历和面试题 时间格式 时间单位: year :年 week :该天在所在的年份里是第几周 timezone_minute:时区偏移量的分钟部分 tim ...

  5. 【DM】达梦数据库中的触发器实例

    建测试数据集 DROP TABLE IF EXISTS TEST; CREATE TABLE TEST(ID INT IDENTITY(1,1),NAME VARCHAR(50),CITY VARCH ...

  6. SQL中的触发器是什么?

    可以简单的理解:相当于是一个时间的触发装置,当满足了触发事件的条件后进行相应的处理操作,例如在数据库表中增加或者删除.修改了某条记录后,输出消息来告知该操作.这样就可以在这个表上设置一个触发器,触发条 ...

  7. SQL 中的游标实例

    --声明变量 declare @IMType varchar(10),@IMResourceID varchar(10) --定义游标 declare information_cursor curso ...

  8. 知方可补不足~SQL中的count命令的一些优化措施(百万以上数据明显)

    回到目录 SQL中对于求表记录总数的有count这个聚合命令,这个命令给我们感觉就是快,比一般的查询要快,但是,当你的数据表记录比较多时,如百万条,千万条时,对于count来说,就不是那么快了,我们需 ...

  9. 什么是存储过程?什么是触发器?SQL中存储过程与触发器的区别是什么?

    什么是存储过程?什么是触发器?SQL中存储过程与触发器的区别是什么? 存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名 ...

最新文章

  1. 基于 WPF + Modern UI 的 公司OA小助手 开发总结
  2. 【radar】毫米波雷达简介
  3. java代码如何写出打印_java - 为什么这个代码向后写,打印“Hello World!”
  4. cefSharp通过js操控页面,含跨域操控
  5. git reset之后找回本地未提交(未add+commit)的代码
  6. 手把手教你做产品经理1.0
  7. java org.jsoup does not exist_java使用Jsoup连接网站超时的解决方法
  8. php 连接socket服务器_PHP-Socket服务端客户端发送接收通信实例详解
  9. asp.net 2.0中页的生存周期(Lifecycle)和动态控件[转]
  10. iChart--地图显示人口统计
  11. 当出现Served at:.........时的错误
  12. 卡斯卡迪亚社区建设者奖:2017年获胜者公布
  13. 视频结构化——原子能力解析
  14. python合并word表格_python docx处理word文档中表格合并问题
  15. Win10重装Win7后开机提示无法验证此文件的数字签名怎么办?
  16. 计算机安装调试维修员中级习题,计算机安装调试维修员培训计划(三级)
  17. 百度传课网易云课堂在线教育平台竞品分析【转】
  18. 使用quartus13.0烧录文件
  19. 计算机读卡器突然无法识别,win7识别不了读卡器怎么解决?win7电脑识别不了读卡器的解决方法...
  20. 关于为什么定积分的计算要用到原函数

热门文章

  1. LDA主题模型(算法详解)
  2. CentOS8 DNF简介 常用命令以及配置本地yum源
  3. android硬件加速器及其问题小结
  4. 盘点2012中国承载网十大事件(转)
  5. android开发关掉发现更新的官方版本,XUpdate:轻量级、高可用性的 Android 版本更新框架...
  6. java se拖动插件_JQuery之拖拽插件
  7. java怎么写自定义布局_java-Android设置自定义首选项布局
  8. PHP xdebug API接口优化揪出了getimagesize这个鬼
  9. JAVA读取属性文件的几种方法
  10. H3C交换机MAC VLAN原理及配置示例