在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. ...
随机推荐
- 【题解】[SHOI2007]善意的投票 / [JLOI2010]冠军调查
Link \(\text{Solution:}\) 我们令源点和汇点分别为睡觉和不睡觉这两种互斥的决策点.把小朋友看成点,问题转化为最小割. 每一个小朋友对自己的意愿指向的汇点/源点.容量为\(1.\ ...
- docker 搭建LNMP网站平台
准备好镜像 1.创建网络 docker network create lnmp 测试环境需删除全部之前起的容器 docker rm -f $(docker ps -a |awk '{print $1} ...
- DDOS、CC、sql注入,跨站攻击防御方法
web安全常见攻击解读--DDos.cc.sql注入.xss.CSRF 一,DDos https://www.cnblogs.com/sochishun/p/7081739.html#4111858 ...
- 【C语言/C++编程学习笔记】:通俗易懂讲解 - 链表!学不会?不存在的!
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...
- linux下php安装php-kafka扩展和php-rdkafka扩展
具体步骤: 1.安装librdkafka cd /usr/local/src #进入安装包存放目录 wget https://github.com/edenhill/librdkafka/archi ...
- Docker下部署springboot项目
1.背景 如何在docker容器环境下部署一个springboot项目? 2.具体步骤 第一步:准备一个springboot项目的xxxx.jar包 jar包中用于测试的一个接口如下 第二步:编写Do ...
- centos8平台使用stress做压力测试
一,安装stress: 说明:el8的源里面还没有,先用el7的rpm包 [root@centos8 source]# wget https://download-ib01.fedoraproject ...
- visio2016激活 试用版
输入秘钥: W9WC2-JN9W2-H4CBV-24QR7-M4HB8 可以成功激活成试用版 有效期30天,30天之后需要你正式激活! 经本人使用完全可以激活,欢迎大家使用! 也欢迎大家支持正 ...
- 【Flutter 面试】main入口函数会被调用几次
老孟导读:这是一个读者面试时被问到的问题,这个问题前段时间我也在VIP交流群和大家一起探讨过. 这个问题涉及引擎的相关知识,如果不了解相关知识,很难回答正确,因为不管说调用几次都是错误的,下面来看一下 ...
- ElasticSearch详细笔记
ElasticSearch详细笔记 什么是ElasticSearch Elasticsearch(简称ES)是一个基于Apache Lucene(TM)的开源搜索引擎,无论在开源还是专有领域,Luce ...