在pgsql库用触发器自动触发PostgreSQL的存储过程,实现插入。
需求:在对表A 执行 insert操作时,筛选符合条件的数据 insert到表B中,编写为存储过程(postgreSQL数据库)
[筛选条件]:
1. dd !="A" 或是 dd为 null;
2. aa 字段第【3】位="5"或="6";
3. 满足条件1不满足2的数据将字段 aa、bb、cc插入表 B;
满足条件1和2的数据将字段 aa、bb、cc、dd="1"插入表 B。
1、创建A表:
create table A(
aa VARCHAR(50) NOT NULL,
bb VARCHAR(50) NOT NULL,
cc VARCHAR(3) NOT NULL,
dd VARCHAR(1)
);
2、创建B表:
create table B(
aa VARCHAR(50) NOT NULL,
bb VARCHAR(50) NOT NULL,
cc VARCHAR(3) NOT NULL,
hh VARCHAR(1) DEFAULT '0',
ii VARCHAR(1) DEFAULT '0',
dd VARCHAR(1) DEFAULT '0',
PRIMARY KEY (bb)
);
3、创建存储过程:
CREATE OR REPLACE FUNCTION insert_table () RETURNS trigger
VOLATILE
AS $pgsql$
declare
value1 varchar(50);
value2 varchar(50);
value3 varchar(3); BEGIN
if (NEW.dd is null or NEW.dd != 'A') then
value1 := NEW.aa;
value2 := NEW.bb;
value3 := NEW.cc;
if (substring(value1,3,1) = '5' or substring(value1,3,1) = '6') then
insert into B (aa,bb,cc,dd) values(value1,value2,value3,'1');
else
insert into B (aa,bb,cc) values(value1,value2,value3);
end if;
end if;
return new;
end;
$pgsql$ LANGUAGE plpgsql;
【注:如果是在 DbVisualizer 工具创建 存储过程,必须 在第一行加上 --/ 和最后一行加上 / ,否则报错!】
【insert 时 NEW 表示新插入的行数据】
4、创建触发器:
CREATE TRIGGER "example_trigger"
AFTER INSERT ON A
FOR EACH ROW
EXECUTE PROCEDURE insert_table();
【AFTER 关键字决定是在关联行的插入之后执行触发器动作】
【FOR EACH ROW 在一次操作表的语句中,每操作成功一行就会触发一次;不写的 话,表示是表级触发器,则无论操作多少行,都只触发一次】
5、插入insert语句测试:
insert into A values('a4567','AWM2020','3',null);
insert into A values('b4797','AWM2021','4',null);
insert into A values('c4567','AWM2022','5','A');
insert into A values('d4797','AWM2023','6','2');
注:触发器 中具体语法 可参考菜鸟教程:
https://www.runoob.com/postgresql/postgresql-trigger.html
在pgsql库用触发器自动触发PostgreSQL的存储过程,实现插入。的更多相关文章
- TeamCity : 自动触发 Build
创建了 build 的配置以后,您既可以手动点击 "Run" 按钮来触发一次 build 过程,也可以通过 Triggers 配置实现自动触发 build 过程.一个 trigge ...
- Gitlab自动触发Jenkins构建打包
一.目的 在部门的测试环境中,开发人员一旦向gitlab仓库提交成功代码,gitlab就会自动触发jenkins构建项目.当然在构建后还可以添加项目部署或者自动化测试的脚本.这里只针对测试环境. 二. ...
- 配置GitLab Push 自动触发Jenkins构建
配置GitLab Push 自动触发Jenkins构建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客是对之前的笔记:https://www.cnblogs.com/yin ...
- zabbix系列(九)zabbix3.0实现自动触发zabbix-agent端shell脚本任务
zabbix实现自动触发远程脚本执行命令 Zabbix触发器(trigger)达到阀值后会有动作(action)执行:发送告警信息或执行远程命令 环境 Server:基于centos6.5 final ...
- Gitlab+Jenkins学习之路(十一)之Jenkins自动触发构建和发布
思路图: 一.下载gitlab plugin jenkins-->系统管理-->管理插件-->下载并安装gitlab plugin 二.配置gitlab认证 路径:Jenkins-- ...
- GitLab 自动触发 Jenkins 构建
GitLab 是当前应用非常广泛的 Git Hosting 工具,Jenkins 是非常牛逼的持续集成工具.尽管 GitLab 有内建的 GitLab CI,但它远没有 Jenkins 那么强大好用. ...
- Gitlab自动触发Jenkins构建项目
Gitlab自动触发Jenkins构建项目 一.前提 Gitlab已安装配置好. Jenkins已安装Gitlab plugin. 二.配置jenkins中Job 1.勾选触发器下的gitlab触发器 ...
- 如何创建一个项目,让gitlab自动触发jenkins进行构建
前进是:你已经配置好jenkins+gitlab自动化布置了,这里只是常规构建新的项目时,需要做的配置,记录下来,以免忘了又着急 参考这篇博客: https://www.jianshu.com/p/e ...
- Jenkins 实现Gitlab事件自动触发Jenkins构建及钉钉消息推送
实现Gitlab事件自动触发Jenkins构建及钉钉消息推送 实践环境 GitLab Community Edition 12.6.4 Jenkins 2.284 Post build task 1. ...
随机推荐
- CentOS7 下 swap 分区的创建、删除及相关配置
一般我们在购买云服务器(例如:阿里云ECS.腾讯云服务器)的时候,选择 CentOS 7 系统之后,登录系统,发现 swap 大小为 0(即没有分配). 如果我们想在该 服务器上安装 Oracle 数 ...
- Mock测试你的Spring MVC接口
1. 前言 在Java开发中接触的开发者大多数不太注重对接口的测试,结果在联调对接中出现各种问题.也有的使用Postman等工具进行测试,虽然在使用上没有什么问题,如果接口增加了权限测试起来就比较恶心 ...
- ES异常处理-NoNodeAvailableException
1.问题描述 ES client客户端能创建,但是在用客户端操作时报:NoNodeAvailableException[None of the configured nodes are availab ...
- docker-compose编写示例
docker-compose.yml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ...
- NLP任务梳理总结
NLP任务 前处理任务 前处理任务的结果可作为下游任务输入的额外特征. POSTa(词性标注) 往模型中输入句子,对每一个token进行词性的识别. 识别出的词性可以用于下游任务. Word Segm ...
- Java实现:抛开jieba等工具,写HMM+维特比算法进行词性标注
一.前言:词性标注 二.经典维特比算法(Viterbi) 三.算法实现 四.完整代码 五.效果演示: 六.总结 一.前言:词性标注 词性标注(Part-Of-Speech tagging, POS t ...
- CSS动画菜鸡记录板
Transition 过渡属性: (background 1s linear 0s) 缓动函数 linear,在 easings.net 可找到相应的功能 若想要多次不同执行,用逗号隔开 Animat ...
- 手把手教你使用 Nginx Ingress 实现金丝雀发布
概述 本文将介绍如何使用 Nginx Ingress 实现金丝雀发布,从使用场景分析,到用法详解,再到上手实践. 前提条件 集群中需要部署 Nginx Ingress 作为 Ingress Contr ...
- apktool的下载,安装,反编译和重新打包
一.环境要求 安装java 1.8 以上 命令行运行 java -version 返回版本大于1.8 如果没有,请安装java 1.8 二.下载与安装 下载apktool_x.x.x.jar到本地 官 ...
- 执行java -jar filename.jar提示没有主清单属性
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> ...