需求:在对表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的存储过程,实现插入。的更多相关文章

  1. TeamCity : 自动触发 Build

    创建了 build 的配置以后,您既可以手动点击 "Run" 按钮来触发一次 build 过程,也可以通过 Triggers 配置实现自动触发 build 过程.一个 trigge ...

  2. Gitlab自动触发Jenkins构建打包

    一.目的 在部门的测试环境中,开发人员一旦向gitlab仓库提交成功代码,gitlab就会自动触发jenkins构建项目.当然在构建后还可以添加项目部署或者自动化测试的脚本.这里只针对测试环境. 二. ...

  3. 配置GitLab Push 自动触发Jenkins构建

    配置GitLab Push 自动触发Jenkins构建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客是对之前的笔记:https://www.cnblogs.com/yin ...

  4. zabbix系列(九)zabbix3.0实现自动触发zabbix-agent端shell脚本任务

    zabbix实现自动触发远程脚本执行命令 Zabbix触发器(trigger)达到阀值后会有动作(action)执行:发送告警信息或执行远程命令 环境 Server:基于centos6.5 final ...

  5. Gitlab+Jenkins学习之路(十一)之Jenkins自动触发构建和发布

    思路图: 一.下载gitlab plugin jenkins-->系统管理-->管理插件-->下载并安装gitlab plugin 二.配置gitlab认证 路径:Jenkins-- ...

  6. GitLab 自动触发 Jenkins 构建

    GitLab 是当前应用非常广泛的 Git Hosting 工具,Jenkins 是非常牛逼的持续集成工具.尽管 GitLab 有内建的 GitLab CI,但它远没有 Jenkins 那么强大好用. ...

  7. Gitlab自动触发Jenkins构建项目

    Gitlab自动触发Jenkins构建项目 一.前提 Gitlab已安装配置好. Jenkins已安装Gitlab plugin. 二.配置jenkins中Job 1.勾选触发器下的gitlab触发器 ...

  8. 如何创建一个项目,让gitlab自动触发jenkins进行构建

    前进是:你已经配置好jenkins+gitlab自动化布置了,这里只是常规构建新的项目时,需要做的配置,记录下来,以免忘了又着急 参考这篇博客: https://www.jianshu.com/p/e ...

  9. Jenkins 实现Gitlab事件自动触发Jenkins构建及钉钉消息推送

    实现Gitlab事件自动触发Jenkins构建及钉钉消息推送 实践环境 GitLab Community Edition 12.6.4 Jenkins 2.284 Post build task 1. ...

随机推荐

  1. 【题解】CF1228D Complete Tripartite

    Link 题目大意:给定一个无向图,将它划分为三个点集,要求在一个点集中的点没有边相连,且颜色相同,不同集合中的点互相有边相连. \(\text{Solution:}\) 我们发现,与一个点之间没有边 ...

  2. day64:nginx模块之限制连接&状态监控&Location/用nginx+php跑项目/扩展应用节点

    目录 1.nginx模块:限制连接 limit_conn 2.nginx模块:状态监控 stub_status 3.nginx模块:Location 4.用nginx+php跑wordpress项目 ...

  3. C#与sql进行图片存取

    1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Da ...

  4. Oracle和MySql之间SQL区别(等效转换以及需要注意的问题)

    本篇博文是Oracle和MySQL之间的等效SQL转换和不同,目前市面上没有转换两种SQL的工具,小编觉得以后也不一定会有,于是在业余时间整理了一下,如果有什么错误之处请留言告知,小编也是刚入门的小白 ...

  5. 震惊!OI居然还考天体运动

    看图说话 看这里: 标签: 标签竟然还是模拟,简直活到爆,物理老师狂喜

  6. centos8平台使用pstree查看进程树

    一,pstree用途 Linux pstree命令将所有行程以树状图显示,树状图将会以 pid (如果有指定) 或是以 systemd 这个基本行程为根 (root) 说明:centos6及更旧版本为 ...

  7. swoole执行外部程序称为进程

    <?php $child = new \Swoole\Process(function(\Swoole\Process $process){ $process->exec('/usr/lo ...

  8. C# Hash算法

    #region Hash算法 /// <summary> /// Hash算法 /// </summary> /// <param name="myStr&qu ...

  9. npm install各种命令模式

    npm install 几种命令模式: npm install moduleName 安装模块到项目目录下 npm install -g moduleName npm install -g 将模块安装 ...

  10. concurrenthasmap

    concur'renthashmap java1.7 hashMap在单线程中使用大大提高效率,在多线程的情况下使用hashTable来确保安全.hashTable中使用synchronized关键字 ...