postgresql 触发器 更新操作
1 前言
功能需求:当一张表格某个字段变化,另一张表某个字段写入该值
2 代码
CREATE OR REPLACE FUNCTION "public"."synStatus"()
RETURNS "pg_catalog"."trigger" AS $BODY$ declare vl_status int; BEGIN SELECT status INTO vl_status FROM ordergoods WHERE order_id = NEW.order_id;
-- Routine body goes here...
IF( TG_OP='UPDATE' ) THEN
UPDATE order SET status = vl_status WHERE NEW.order_id = order_id;
END IF;
RETURN NEW;
END
$BODY$
LANGUAGE plpgsql VOLATILE
COST 10 //触发器
CREATE TRIGGER "triggerSynOrder" AFTER UPDATE OF "status", "timeline" ON "public"."ordergoods"
FOR EACH ROW
EXECUTE PROCEDURE "public"."synStatus"();
功能2:子订单中状态最小的更新到订单上,并更新时间线字段
CREATE OR REPLACE FUNCTION "public"."synStatus2"()
RETURNS "pg_catalog"."trigger" AS $BODY$ declare status_min int; BEGIN SELECT MIN(status) INTO status_min FROM ordergoods WHERE order_id = NEW.order_id;
-- Routine body goes here...
IF( TG_OP='UPDATE' ) THEN
UPDATE order SET status = status_min,timeline = concat_ws(',', timeline,cur_timeline_status)),cur_timeline_status = NEW.cur_timeline_status WHERE NEW.order_id = order_id;
END IF;
RETURN NEW;
END
$BODY$
LANGUAGE plpgsql VOLATILE
COST 10 //触发器
CREATE TRIGGER "triggerSynOrder" AFTER UPDATE OF "status", "timeline" ON "public"."ordergoods"
FOR EACH ROW
EXECUTE PROCEDURE "public"."synStatus2"();
3 小结
注:方法中NEW和OLD指的是触发器监听的某表某行的新数据和未更新前的数据
postgresql 触发器 更新操作的更多相关文章
- MySQL触发器和更新操作
一.触发器概念 触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动 ...
- Oracle Sales Cloud:管理沙盒(定制化)小细节2——使用对象触发器更新数字字段
在上一篇 "管理沙盒(定制化)小细节1" 的随笔中,我们使用公式法在 "业务机会" 对象(单头)上建立了 "利润合计" 字段,并将它等于 & ...
- mysql级联更新的两种方式:触发器更新和外键
1.mysql级联更新有两种方式:触发器更新和外键更新. 2.触发器更新和外键更新的目的都是为了保证数据完整性. 我们通常有这样的需求:删除表Table 1中记录,需要同时删除其它表中与Table 1 ...
- MySQL触发器更新本表数据异常:Can't update table 'tbl' in stored function/trigger because it
MySQL触发器更新本表数据异常:Can't update table 'tbl' in stored function/trigger because it 博客分类: 数据库 MySQLJava ...
- PostgreSQL触发器的使用
原文: https://www.yiibai.com/postgresql/postgresql-trigger.html -------------------------------------- ...
- [转载]php连接postgreSQL数据库及其操作(php5,postgreSQL9)
数据库连接:dbconn.php<?php$conn = pg_connect("host=localhost port=5432 dbname=myd user=postgres p ...
- MongoDB 文档的更新操作
在MongoDB中,更新单个doc的操作是原子性的.默认情况下,如果一个update操作更新多个doc,那么对每个doc的更新是原子性的,但是对整个update 操作而言,不是原子性的,可能存在前面的 ...
- 关于SubSonic3.0插件使用Json反序列化获得的实体进行更新操作时,只能执行添加而不能执行修改(编辑)操作的处理
由于目前开发的项目使用云计算技术,客户端只进行UI与相关事件的功能开发,而所有的计算与处理都放到了服务器端,客户端与数据库没有任何关联,所以服务器端与客户端使用我们自己开发的通讯加密方式进行,而具体的 ...
- java-int类型:int默认为0导致更新操作未赋值的情况下将值更新为0
日常开发中,做更新操作的时候的处理方法为:当这个字段有值则更新,没有值就不更新,在mybatis的xml中表现为: <!-- 修改记录,只修改只不为空的字段 --> <update ...
随机推荐
- 自学python 1.
1.变量命名规范 1.数字,字母,下划线 2.不能数字开头和纯数字 3.要有意义 4.不要太长 5.驼峰和下划线 6.不要用中文 7.不能用关键字 8.区分大小写2.name = input(&quo ...
- 伪触发 input file 的click事件
前端在做 input file 美化的时候,通常 把 input 定位position 到 已美化的按钮最上方 opacity: 0 HTML5时代,已有更方便的方法,点击美化按钮直接触发选择文件事件 ...
- electron-vue项目搭建
参考:https://simulatedgreg.gitbooks.io/electron-vue/content/cn/getting_started.html 1. cnpm install -g ...
- Newtonsoft.Json序列化字符串-格式化
转自:https://blog.csdn.net/wlphlj/article/details/51982866最近C#中需要将实体进行json序列化,使用了Newtonsoft.Json publi ...
- Tomcat连接池配置与实现/JNDI
方法一: 在Tomcat的conf/context.xml中配置在Tomcat\apache-tomcat-6.0.33\conf目录下的context.xml文件中配置默认值如下: <?xml ...
- JS中原型链中的prototype与_proto_的个人理解与详细总结
1.对象的内部属性[[prototype]]和属性__proto__:每个对象都具有一个名为__proto__的属性: 2.函数的属性prototype:每个构造函数(构造函数标准为大写开头,如Fun ...
- ASP.NET EF 延迟加载,导航属性延迟加载
ASP.NET EF 延迟加载,导航属性延迟加载 EF(EntityFramework)原理:属于ORM的一种实现 通过edmx文件来查看三部分:概念模型,数据模型,映射关系,上下文DbConte ...
- vue使用element-ui的el-input监听不了键盘事件解决
vue使用element-ui的el-input监听不了键盘事件,原因应该是element-ui自身封装了一层div在input标签外面,把原来的事件隐藏了,所以如下代码运行是无响应的: <el ...
- mysql 案例 ~ mysql常见日志错误
一 简介: mysql note级别日志汇总二错误系列 1 Aborted connection 1 [Note] Aborted connection 61 to db: 'unconnec ...
- XML解析技术-dom4j