在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. ...
随机推荐
- ElasticSearch 索引 VS MySQL 索引
前言 这段时间在维护产品的搜索功能,每次在管理台看到 elasticsearch 这么高效的查询效率我都很好奇他是如何做到的. 这甚至比在我本地使用 MySQL 通过主键的查询速度还快. 为此我搜索了 ...
- 不会吧,这也行?iOS后台锁屏监听摇一摇
目录 背景介绍 探索过程 其他 APP 有没有类似功能 系统提供的摇一摇回调能否满足 其他方法能否实现 利用 CoreMotion 框架,监听加速计原始数据 通过加速计监听摇一摇 控制器相关逻辑和代码 ...
- Hadoop理论基础
Hadoop是 Apache 旗下的一个用 java 语言实现开源软件框架,是一个开发和运行处理大规模数据的软件平台.允许使用简单的编程模型在大量计算机集群上对大型数据集进行分布式处理. 特性:扩 ...
- RHSA-2018:0395-重要: 内核 安全和BUG修复更新(需要重启、本地提权、代码执行)
[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 修复命令: 使用root账号登陆She ...
- devops-jenkins基于角色的权限管理RBAC
一. devops-jenkins基于角色的权限管理RBAC 1 安装角色的rbac角色管理 1.1) 点击系统管理 1.2) 选择插件管理 1.3) 选择可选插件,输入role搜索 1.4) 选择 ...
- iOS企业重签名管理软件之风车签名
这是一款在Mac平台下安全可控的iOS签名管理软件,旨在对签名后的APP能够完全控制,包括APP的开启或禁用.设置到期时间锁.注入第三方动态库文件.设置安装限量.修改APP名称和自定义Bundle I ...
- 网站搭建-云服务器ECS-镜像管理
学习笔记: 快照,系统盘可创建镜像,数据盘不可以. 实例可以直接创建镜像,包括系统盘和数据盘 复制镜像: 新购服务器,选择镜像(又买). 共享镜像: 账号ID就是UID 云市场获取镜像; 1. 创建新 ...
- 在SpringBoot项目中怎样引入.yml文件中的设置
SpringBoot中获取application.yml文件内容 原始方式pro.load()与 pro.getProperty()配合的方式 @Value注解方式 @ConfigurationPro ...
- 多测师讲解python函数 _open_高级讲师肖sir
open()函数 #open() 函数用于打开一个文件,创建一个 file 对象 #Python open() 函数用于打开一个文件,并返回文件对象, # 在对文件进行处理过程都需要使用到这个函数,如 ...
- MeteoInfoLab脚本示例:加载图片和透明图层
MeteoInfoLab的georead函数提供了读取shape文件.image文件(JPG.PNG等,需要有相应的地理定位文件)文件生成图层的功能(事实上shaperead也是同样的功能,不过函数名 ...